Golang的日志处理

整个看了一圈下来,感觉Golang的日志包在管理多线程安全的情况下,提供了最小粒度的工具。并没有提供什么复杂的过滤器之类的生成。

实现了一个demo来记录一下日志分类日志打印等实现:

package main

import (
    "log"
    "os"
    "io/ioutil"
    "io"
)

var (
    Trace   *log.Logger // 记录所有日志
    Info    *log.Logger // 重要的信息
    Warning *log.Logger // 需要注意的信息
    Error   *log.Logger // 致命错误
)

func init() {
    file, err := os.OpenFile("file", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    if err != nil {
        log.Fatalln("Failed to open error log file:", err)
    }

    Trace = log.New(ioutil.Discard, "TRACE: ", log.Ltime|log.Lshortfile)
    Info = log.New(os.Stdout, "Info: ", log.Ltime|log.Lshortfile)
    Warning = log.New(os.Stdout, "Warning: ", log.Ltime|log.Lshortfile)
    Error = log.New(io.MultiWriter(file, os.Stderr),  "Error", log.Ltime|log.Lshortfile)
}

func main() {
    Trace.Println("I have something standard to say")
    Info.Println("Special Information")
    Warning.Println("There is something you need to know about")
    Error.Println("Something has failed")
}

其实给我感觉跟python没差,还简单很多。

首先还是申明一个logger对象,用他来调用各种logger的方法,一开始初始化了几个级别的日志logger收集器。

随后就是new一个新的logger并将地址返回分配给它们。这种日志管理的方法真给人一种很清爽的感觉,而且外面可以基于这些最基础的东西再做二次的定制。也非常灵活。后面写东西会尝试多用用看。再来补这篇文章。先占个坑

to be continue...

时间: 2025-01-11 18:04:34

Golang的日志处理的相关文章

golang第三方日志包seelog配置文件详解

开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提.在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一.seelog主要功能下面我们看看seelog有啥强大 设置不同级别的日志:输出到终端或文件:过滤指定级别日志:定义多种不同的日志输出格式:根据触发日志的文件名或者函数名来区别输出日志:通过 SMTP 或 TCP 转发日志(网络转发日志):滚动日志文件(过期日志自动清除).二.安装seelog$ go get github.c

Golang简单日志类

实现简单的日志写入文件功能运行环境:golang1.4.2+win7x64golang1.4.2+centos6.5×64 1 package Helper 2 3 import ( 4 “fmt” 5 “log” 6 “os” 7 “time” 8 ) 9 10 /*简单日志类*/ 11 /*注意,这个类不是线程安全的*/ 12 type LogFile struct { 13 mFile *os.File 14 mLogger *log.Logger 15 } 16 17 //创建日志对象

golang高性能日志库zap配置示例

zap是uber开源的Go高性能日志库,gitlab地址 安装 go get -u go.uber.org/zap 请注意,zap仅支持两个最新的Go版本. 示例 简单示例 格式化输出 package main import ( "go.uber.org/zap" "time" ) func main() { // zap.NewDevelopment 格式化输出 logger, _ := zap.NewDevelopment() defer logger.Sync

golang 写日志 log包

package main import ( "flag" "fmt" "log" "os" "runtime" ) var ( logFileName = flag.String("log", "server.log", "Log file name") ) func main() { runtime.GOMAXPROCS(runtime.NumC

rsyslog使用简介

1 把日志打到新的日志文件里面 #### RULES ####ruleset(name="remote"){ action(type="omfile" file="/var/log/golang") stop} input(type="imtcp" port="514" ruleset="remote") 这样通过tcp 514端口打过来的syslog会走 ruleset="r

Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一个日志文件里面?

不论应用是如何部署的,我们都期望能扑捉到应用的错误日志, 解决思路: 自己写代码处理异常拦截,甚至直接在main函数中写异常拦截. stderr重定向到某个文件里 使用 syscall.Dup2 第一种方法比较简单, 我们这里主要看后两种: 使用 stderr替换的代码: package main import (     "fmt"     "os" ) func main() {     f, _ := os.OpenFile("C:\\tmp\\11

Golang gRPC中间件:拦截器链接,验证,日志记录,重试等

gRPC Go Middleware: interceptors, helpers, utilities. Middleware gRPC Go recently acquired support for Interceptors, i.e. middleware that is executed either on the gRPC Server before the request is passed onto the user's application logic, or on the

GoLang几种读文件方式的比较

GoLang提供了很多读文件的方式,一般来说常用的有三种.使用Read加上buffer,使用bufio库和ioutil 库. 那他们的效率如何呢?用一个简单的程序来评测一下: package main import(    "fmt"     "os"     "flag"     "io"     "io/ioutil"     "bufio"     "time"

golang环境中grpc与zipkin的集成

对于分布式系统服务,一个请求需要系统中多个模块,上百台机器配合才能完成.当进行系统调优时单靠分析日志是很难发现到系能瓶颈的,效率非常低下,为此google上线了分布式服务追踪系统Drapper.目前市面上的实现有Twitter的zipkin和阿里的鹰眼系统.最近我在做服务追踪,我们后台使用golang开发,grpc做服务通信,最终选择集成zipkin来做,这个公开资料比较少,写文章来总结一下,方便后来者. 一.首先zipkin的安装使用 1.下载 wget -O zipkin.jar 'http