golang第三方日志包seelog配置文件详解
开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提。在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档
一、seelog主要功能
下面我们看看seelog有啥强大
设置不同级别的日志;
输出到终端或文件;
过滤指定级别日志;
定义多种不同的日志输出格式;
根据触发日志的文件名或者函数名来区别输出日志;
通过 SMTP 或 TCP 转发日志(网络转发日志);
滚动日志文件(过期日志自动清除)。
二、安装seelog
$ go get github.com/cihub/seelog
三、使用seelog
我们先看看一个官方的demo
package main
import (
log "github.com/cihub/seelog"
)
func main() {
defer log.Flush()
log.Info("Hello from Seelog!")
}
很简单是吧,导入包,就直接可以用了,下面我们看看如何通过配置文件高度定制我们的日志。
import (
log "github.com/cihub/seelog"
)
func SetupLogger() {
logger, err := log.LoggerFromConfigAsFile("seelog.xml")
if err != nil {
return
}
log.ReplaceLogger(logger)
}
seelog的配置文件一般用xml,下面我们看seelog.xml配置文件的大体框架
<seelog>
<exceptions>
<exception ... />
<exception ... />
...
</exceptions>
<outputs>
<splitter>
<console/>
<file ... />
<rollingfile ... />
<smtp>
...
</smtp>
<buffered>
...
</buffered>
<conn ... />
</splitter>
<filter>
...
</filter>
</outputs>
<formats>
<format ... />
<format ... />
...
</formats>
</seelog>
对框架有了解后,下面我们拿官方的实例配置文件来做说明:https://github.com/cihub/seelog/wiki/Example-config
<!-- type 设置记录器类型 https://github.com/cihub/seelog/wiki/Logger-types-reference
minlevel 设置日志最低级别; maxlevel 设置日志的最高级别
也可以通过 <seelog levels="trace,info,critical"> 设置日记级别 -->
<seelog type="asynctimer" asyncinterval="5000000" minlevel="debug" maxlevel="error">
<exceptions>
<!-- <exception> 是为特定的程序文件(filepattern)或函数(funcpattern)设定特殊的日志规则 -->
<exception funcpattern="*main.test*Something*" minlevel="info"/>
<exception filepattern="*main.go" minlevel="error"/>
</exceptions>
<!-- <outputs> formatid 指定日志输出的格式(格式在<formats>标签中定义) -->
<outputs formatid="main">
<!-- <console> 标签表示输出到终端 -->
<console/>
<!-- <splitter> 用于细分<outputs>日志格式,内部支持:file(文件), rollingfile(滚动文件,自动清除过期),
buffered(日志写到内存再写到文件), smtp(发送日志到邮件), con(网络转发) -->
<splitter formatid="format1">
<!-- log.log, log2.log将按<formats>标签中的id="format1"格式写入 -->
<file path="log.log"/>
<file path="log2.log"/>
</splitter>
<splitter formatid="format2">
<file path="log3.log"/>
<file path="log4.log"/>
</splitter>
<!-- <rollingfile>滚动文件(定期清除过期日志)
formatid: 指定日志格式; type="size" 按大小; maxsize: 单日志文件最大大小; maxrools: 最大文件数 -->
<rollingfile formatid="someformat" type="size" filename="./log/roll.log" maxsize="100" maxrolls="5" />
<!-- <buffered> 将日志先存在内存中,定期写入文件,适合日志并发量较大或 IO 比较紧张的场合
size: 缓存大小; flushperiod: 缓存间隔(毫秒) -->
<buffered formatid="testlevels" size="10000" flushperiod="1000">
<file path="./log/bufFileFlush.log"/>
</buffered>
<!-- <filter>用于单独处理某级别日志
过滤日志,把级别是error的通过邮件smtp方式发送出去(一般会发给相应的运维人员) -->
<filter levels="error">
<file path="./log/error.log"/>
<smtp senderaddress="noreply-notification-service@none.org"
sendername="Automatic notification service"
hostname="mail.none.org"
hostport="587"
username="nns"
password="123">
<recipient address="john-smith@none.com"/>
<recipient address="hans-meier@none.com"/>
</smtp>
<!-- 按tcp4网络协议发送日志 -->
<conn net="tcp4" addr="server.address:5514" tls="true" insecureskipverify="true" />
</filter>
</outputs>
<!-- <formats> 定制日志的输出格式
https://github.com/cihub/seelog/wiki/Format-reference -->
<formats>
<format id="main" format="%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n"/>
<format id="someformat" format="%Ns [%Level] %Msg%n"/>
<format id="testlevels" format="%Level %Lev %LEVEL %LEV %l %Msg%n"/>
<format id="usetags" format="<msg>%Msg</time>"/>
<format id="format1" format="%Date/%Time [%LEV] %Msg%n"/>
<format id="format2" format="%File %FullPath %RelFile %Msg%n"/>
</formats>
</seelog>
初次接触难免会觉得配置文件的内容有点多,难以理解,其实只要我们理解它配置文件的大体框架,然后自己试着更改配置文件,看看输出什么,就很快明白了。
<!-- 我只需要把日志按指定格式输出到终端 -->
<seelog type="asynctimer" asyncinterval="1000000" minlevel="debug" maxlevel="error">
<outputs formatid="main">
<!-- 仅输出到终端 -->
<console/>
</outputs>
<formats>
<!-- 设置格式 -->
<format id="main" format="%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n"/>
</formats>
</seelog>
<!-- ****** 我是分割线 ***** -->
<!-- 现在我想把日志输出到终端同时也把日志输出到文件 -->
<seelog type="asynctimer" asyncinterval="1000000" minlevel="debug" maxlevel="error">
<outputs formatid="main">
<console/>
<!-- 输出到文件,且不同于终端的日志格式 -->
<splitter formatid="format1">
<file path="log.log"/>
</splitter>
</outputs>
<formats>
<!-- 设置格式 -->
<format id="main" format="%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n"/>
<format id="format1" format="%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n"/>
</formats>
</seelog>
golang第三方日志包seelog配置文件详解的更多相关文章
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- 一、Nginx配置文件详解
配置文件介绍 主要有两部分:分别是 main:主体部分 http{}:虚拟主机配置部分 配置指令主要以分号结尾:配置语法:directive value1 [value2 ....] 支持使用的变量 ...
- 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...
- SaltStack系列(一)之环境部署、命令及配置文件详解
一.SaltStack介绍 1.1 saltstack简介: saltstack是基于python开发的一套C/S架构配置管理工具,它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证 ...
- Nginx简介及配置文件详解
http://blog.csdn.net/hzsunshine/article/details/63687054 一 Nginx简介 Nginx是一款开源代码的高性能HTTP服务器和反向代理服务 ...
- nginx之旅(第一篇):nginx下载安装、nginx启动与关闭、nginx配置文件详解、nginx默认网站
一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http: ...
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...
- Rsyslog配置文件详解
Rsyslog配置文件详解https://my.oschina.net/0757/blog/198329 # Save boot messages also to boot.log 启动的相关信息lo ...
- 【转】nginx服务器安装及配置文件详解
原文:http://seanlook.com/2015/05/17/nginx-install-and-config/ nginx服务器安装及配置文件详解 nginx在工作中已经有好几个环境在使用了, ...
随机推荐
- Android开发学习之数据存取
Android系统中提供了一种文件读写的方法,可以将一些数据以文件的形式保存在设备中.比如一些word文档,PDF文档,图片,音频,视频文件等. 使用文件读写方法的步骤: 1.调用Context.op ...
- Jsp应用EL和JSTL实例对比。
普通方式: register.jsp <%@ page language="java" import="java.util.*" pageEncoding ...
- Symantec Backup Exec(BE)的启停
# /etc/init.d/VRTSralus.init start Starting Symantec Backup Exec Remote Agent ...... Starting Symant ...
- Python 字典 in 操作符
描述 Python 字典 in 操作符用于判断键(key)是否存在于字典(D)中,如果键在字典中返回True,否则返回False. 在Python2中还可以使用 has_key() 方法,官方文档推荐 ...
- Python UNICODE GBK UTF-8 之间相互转换
Python 编码格式检测,可以使用 chardet , 例如: import urllib rawdata = urllib.urlopen('http://www.google.cn/').rea ...
- 在ubuntu中配置深度学习python图片分类实验环境
1 安装numpy,scipy, matplotlib, sudo apt-get install python-numpy sudo apt-get install python-scipy sud ...
- Meta Blogging
Meta Blogging 由来 偶然想到说如果哪一天cnblogs挂了,那之前记录的随笔怎么办?可不可以把它们给download下来本地保存一份.正好看到有个库叫requests, 干嘛不试试看呢. ...
- JS 中document.URL 和 windows.location.href 的区别
实际上,document 和 windows 这两个对象的区别已经包含了这个问题的答案. document 表示的是一个文档对象,windows 表示一个窗口对象. 一个窗口下面可以有很多的docu ...
- Fragment里面的ListView的item点击没反应
近期做一个消息列表,发现fragment的listview载入消息出来后,每条消息都点击不了.经过询问和查下已解决 开发中非经常见的一个问题,项目中的listview不不过简单的文字,经常须要自定义l ...
- Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
前言 基本环境 Django版本:1.11.8 Python版本:3.6 OS: win10 x64 本文摘要 提供了常用的Django内置过滤器的详细介绍,包括过滤器的功能.语法.代码和效果示例. ...