Golang简单日志类

实现简单的日志写入文件功能
运行环境:
golang1.4.2+win7x64
golang1.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 //创建日志对象
18 func NewLogFile() *LogFile {
19     return &LogFile{mFile: nil, mLogger: nil}
20 }
21
22 //开始log,参数fileName为日志文件名
23 func (logFile *LogFile) BeginLogFile(fileName string) error {
24     strTime := time.Now().Format(“20060102_150405″) //按照这种格式进行格式化
25
26     //GetCurPath()得到当前执行文件路径,参考前一篇博文,得到类似于这样的一个文件名称RSvr_20150130_180108.log
27     logFileName := GetCurPath() + fileName + “_” + strTime + “.log”
28     mFile, err := os.OpenFile(logFileName, os.O_RDWR|os.O_CREATE, 7777)
29
30     if err != nil {
31         return err
32     }
33
34     logFile.mLogger = log.New(mFile, “\r\n”, log.Ldate|log.Ltime|log.Llongfile)
35
36     return nil
37 }
38
39 //结束log,释放资源
40 func (logFile *LogFile) EndLogFile() {
41     if logFile.mFile != nil {
42         logFile.mFile.Close()
43     }
44 }
45
46 //记录各种信息
47 //记录Fatal
48 func (logFile *LogFile) LogFatal(msg string, err error) {
49     if err != nil {
50         fmt.Printf(“Fatal: “+msg+”  %v\n”, err)             //显示出来
51         logFile.mLogger.Fatalf(“Fatal: “+msg+”  %v\n”, err) //记录到文件里
52     }
53 }
54
55 //记录Error
56 func (logFile *LogFile) LogErr(msg string, err error) {
57     if err != nil {
58         fmt.Printf(“Err: “+msg+” %v\n”, err)             //显示出来
59         logFile.mLogger.Printf(“Err: “+msg+” %v\n”, err) //记录到文件里
60     }
61 }
62
63 //记录msg
64 func (logFile *LogFile) LogMsg(msg string) {
65     fmt.Printf(“Msg: %v\n”, msg)             //显示出来
66     logFile.mLogger.Printf(“Msg: %v\n”, msg) //记录到文件里
67 }

使用方法如下:
①创建一个全局变量

1 var logFile *Helper.LogFile = nil       //记录文件

②创建对象并使用

 1 //创建记录文件
 2 logFile = Helper.NewLogFile()
 3 err := logFile.BeginLogFile(“RSvr”)
 4
 5 //TODO err判断
 6
 7 //TODO 线程安全
 8
 9 //记录信息
10 logFile.LogMsg(“RSvr Server Running!”)
11
12 //释放
13 if logFile != nil {
14     logFile.EndLogFile()
15 }
时间: 2024-08-17 07:19:32

Golang简单日志类的相关文章

简单的日志类

class LogHelper { string logFile = ""; /// <summary> /// 不带参数的构造函数 /// </summary> public LogHelper() { } /// <summary> /// 带参数的构造函数 /// </summary> /// <param name="logFile"></param> public LogHelper(

C++开源日志类

今天想给我的C++项目找一个开源的日志类,用于记录系统日志,结果浪费了半个下午的时间.从网上搜索相关资料,找到以下几个备选方案: 1.log4cplus 下载地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/1.1.0 2.log4cxx 下载地址:http://logging.apache.org/log4cxx/download.html (log4cxx 是由JAVA实现的 log4j 开源的,用C++实

spring aop简单日志实例

转载自:http://www.blogjava.net/laoding/articles/242611.html 一直就用spring的IOC,遗憾spring的另一重要组成部分AOP却没用过,所以近几天抽空研究了下AOP,学了些东西,在这里记录下spring2.0的aop配置,以一个简单的记录日志的实例来说明,先介绍下用XMLSchema来配置,下一篇介绍annotation配置,废话不多说,开始吧先新建个web工程,将spring的包加进去,为方便就把全部的jar包加进去. 先来看个接口,很

C#日志类记录

每个程序都要和日志打交道.程序日志的质量直接影响了排除问题的难度.普通程序调试信息直接输出控制台,复杂程序则通过文本,xml等方式记录运行时的调试信息.在C#中Diagnostics命名空间下有一个微软提供的专门用于记录信息的TraceSource类.TraceSource的使用方法很简单,只需要4行代码 TraceSource ts = new TraceSource("Code.Main", SourceLevels.All); ts.Listeners.Add(new Conso

WorldWind源码剖析系列:日志类Log

Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs : EventArgs//日志事件参数 { public int level; public string category; public string message; public LogEventArgs(int _l, string _c, string _m) { level = _l

android Loger日志类(获取内置sd卡)

Android手机自带内部存储路径的获取 原文地址:http://my.oschina.net/liucundong/blog/288183 直接贴代码: public static String getExternalSdCardPath() { if (SDCardUtils.isSDCardEnable()) { File sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());

Golang的日志处理

整个看了一圈下来,感觉Golang的日志包在管理多线程安全的情况下,提供了最小粒度的工具.并没有提供什么复杂的过滤器之类的生成. 实现了一个demo来记录一下日志分类日志打印等实现: package main import ( "log" "os" "io/ioutil" "io" ) var ( Trace *log.Logger // 记录所有日志 Info *log.Logger // 重要的信息 Warning *lo

多人即时战斗游戏服务端系列[3]--日志类及Config类以及Excel生成类

这里说一些辅助类的设计及介绍. 依然上类图先: 首先是日志类和Config,这个库以及Config库取自暗黑3的民间模拟器mooege, 当时看了写的简短小巧就直接拿过来用了. 后来虽然发现一些问题,进行简单修改和优化之后,在项目中进行使用了. 首先是日志类,看了下类图也就没几行,简单的就是一些输出层级,带有可外部加载的扩展方法,ExtensionLogTarget,通过反射加载,然后进行一些扩展目标的输出. 修改部分的话,比较简单,原先日志是同步输出,这样会导致卡掉一些时间比较敏感的运算,这边

SLF4J 简单日志门面 介绍和使用

参考:http://singleant.iteye.com/blog/934593        http://liuzidong.iteye.com/blog/776072 介绍: 简单日记门面(simple logging Facade for java)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现. Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J.