NATS源代码之logger目录
nats的logger目录文件如下
log.go
syslog.go
syslog_windows.go
基于golang语言的logger包实现日志功能。
Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能。不用多说,log支持并发操作(即协程安全-相对于Java中的线程安全而言),其结构定义如下:
type Logger struct {
mu sync.Mutex // ensures atomic writes; protects the following fields
prefix string // prefix to write at beginning of each line // 日志行前缀
flag int // properties // 日志打印格式标志,用于指定每行日志的打印格式
out io.Writer // destination for output // 用于指定日志输出位置,理论上可以是任务地方,只要实现了io.Writer接口就行
buf []byte // for accumulating text to write // 日志内容
}
打印日志有5个方法 Debug,Info,Warn, Error ,Fatal 日志级别由低到高
设置日志级别的方法为:logger.SetLevel() 如:logger.SetLevel(logger.WARN)
则:logger.Debug(....),logger.Info(...) 日志不会打出,而
logger.Warn(...),logger.Error(...),logger.Fatal(...)日志会打出。
设置日志级别的参数有7个,分别为:ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF
其中 ALL表示所有调用打印日志的方法都会打出,而OFF则表示都不会打出。
日志文件切割有两种类型:1为按日期切分。2为按日志大小切分。
按日期切分时:每天一个备份日志文件,后缀为 .yyyy-MM-dd
过0点是生成前一天备份文件
按大小切分是需要3个参数,1为文件大小,2为单位,3为文件数量
文件增长到指定限值时,生成备份文件,结尾为依次递增的自然数。
文件数量增长到指定限制时,新生成的日志文件将覆盖前面生成的同名的备份日志文件。
log.go
// SysLogger logs to the windows event logger
type SysLogger struct {
writer *eventlog.Log
debug bool
trace bool
}
提供两种模式,基于两个函数: NewStdLogger NewFileLogger
syslog.go
// SysLogger provides a system logger facility
type SysLogger struct {
writer *syslog.Writer
debug bool
trace bool
}
基于 log.syslog,提供两个函数: NewSysLogger NewRemoteSysLogger 支持远程日志功能
syslog包为系统日志服务提供了一个简单的接口。
syslog_windows.go
基于"golang.org/x/sys/windows/svc/eventlog"实现向windows系统写入事件
// SysLogger logs to the windows event logger
type SysLogger struct {
writer *eventlog.Log
debug bool
trace bool
}
提供两个函数: NewSysLogger NewRemoteSysLogger
NATS源代码之logger目录的更多相关文章
- NATS源代码分析之auth目录
NATS是一个轻量的消息发布-订阅系统.NATS的核心是Event machine. 项目Server端源代码地址: github.com/nats-io/gnatsd 在auth目录中, multi ...
- 1、android源代码下载及目录分析,和eclipser的跟踪
1.在eclipse中跟踪源代码:假如对mainactivity.java里面的activity按Ctrl+鼠标左键(前提已经导入android源代码:方法1:在项目点击右键,然后找到properti ...
- skynet源代码学习 - logger工程和服务
当skynet启动的时候,会依据配置文件制定的日志文件来创建一个logger context.详细过程就是找到logger.so动态链接文件.而后调用其logger_create函数(參数是配置的日志 ...
- PetaPoco源代码学习--0.目录贴
2017年3季度后,以人力外包的形式派驻到甲方单位进行项目救急时,接触到了甲方单位的ASP.NET MVC项目的ORM框架,它以PetaPoco(2012年的老版本)进行改造升级的,当初就想学习一下这 ...
- linux 源代码目录结构
Linux源代码目录树结构 (2008-04-21 09:14) 分类: Linux/Unix Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大 ...
- arcgis api for js入门开发系列二不同地图服务展示(含源代码)
上一篇介绍了arcgis api离线部署,这篇开始正式介绍arcgis api for js开发:想要学习webgis开发,首先得熟悉了解前端技术,比如界面布局设计的html+css,核心的是java ...
- Maven学习-目录结构
在前一篇文章中,我们介绍了什么是Maven,以及如何用Maven来构建我们的项目.不了解Maven的童鞋,可以看这里Maven学习-入门.在这篇文章中,我们将学习Maven的项目的目录结构相关的内容. ...
- Android Studio目录结构浅析
让我们来简单了解下Android Studio中不同目录(文件)的位置和用途.首先看下一个App的最简单的目录结构 OK,我们这么看,第一,把这么多文件先分成这么三块1. 编译系统(Gradle)2. ...
- Visual Studio 2013新建工程导入现有代码文件夹并且保持目录结构
本文提供了一个在Windows环境下使用Visual Studio 2013编辑现有源代码并且保持目录结构的方法.本文使用VS2013中文社区版做示例(本版本为免费版,可在VS官网下载),其他版本的V ...
随机推荐
- struts2中文件上传
注意点 private File image;//对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的 private String imageFileName;// ...
- 如何为Drupal缓存对象指定缓存类?
什么意思?意思是说,假如你有这样的需求,需要将cache_page缓存到数据库,其它的都缓存到memcache,这该怎么办? 看看_cache_get_object()的实现你就会知道上面的问题该怎么 ...
- Linux命令-网络命令:last
last 统计linux系统所有用户的登录时间(多次登录信息)
- 各种MQTT server功能比較
this page attempts to document the features that various MQTT servers (brokers) support. This is spe ...
- 使用PHP创建一个REST API(Create a REST API with PHP)
译者前言: 首先这是一篇国外的英文文章,非常系统.详尽的介绍了如何使用PHP创建REST API,国内这方面的资料非常非常的有限,而且基本没有可操作性.这篇文章写的非常好,只要对PHP稍有了解的程序员 ...
- Mac 學習系列之Python Challenge 11-20
11.给你一个正整数列表 L, 如 L=[2,8,3,50], 输出L内全部数字的乘积末尾0的个数, 如例子L的结果为2.(提示:不要直接相乘,数字非常多,可能溢出) Answer: n_2 = 0 ...
- ArcGIS教程:Geostatistical Analyst 应用演示样例
Geostatistical Analyst 满足多种不同应用的需求. 下面是 Geostatistical Analyst 的一小部分应用演示样例. 探索性空间数据分析 Geostatistical ...
- CCNA2.0笔记_二层交换
VLAN上并不需要配置IP地址,除非是出于管理的需要. 基于Vlan的设计原理,即隔离网络的广播域,再者运行STP来提供二层的防环机制:在同一个设备集中不同Vlan之间是无法通信的(在没有三层设备的情 ...
- C# tif文件转jpg
需要添加WindowBase,PresentationCore的引用. 代码如下: private Stream GetImageStream() { //可以通过网络或本地文件的形式,返回Tif文件 ...
- flume+kafka+storm打通过程
0.有的地方我已经整理成脚本了,有的命令是脚本里面截取的 1.启动hadoop和yarn $HADOOP_HOME/sbin/start-dfs.sh;$HADOOP_HOME/sbin/start- ...