实现简单的日志写入文件功能
运行环境:
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 }

转载于:https://www.cnblogs.com/chevin/p/5673047.html

Golang简单日志类相关推荐

  1. 来自mooon的最简单的日志类CSimpleLogger

    /** * 单个头文件,可即时独立使用,只要定义了宏NOT_WITH_MOOON,即不依赖于mooon * 简单的写日志类,非线程安全,提供按大小滚动功能 * 不追求功能,也不追求性能,只求简单,若要 ...

  2. Android动态日志,一个简单的Android日志类

    Android自带的日志类不支持显示文件名和行号,调试时很不方便.而第三方日志库往往又太重.所以自己对Android自带的日志类做了一个简单的封装,主要是调试时使用,不考虑日志丢失和性能问题.日志的输 ...

  3. golang利用反射写入excel的简单工具类

    golang利用反射写入excel的简单工具类 工具类源码 使用方法 工具类源码 package excelimport ("errors""github.com/tea ...

  4. php如何设计一个日志类,一个简单php日志类

    日志类如下,news目录为当前php文档根目录下子目录. if( ! defined('BASEPATH') ) { define ('BASEPATH', $_SERVER['DOCUMENT_RO ...

  5. Golang简单语法

    Golang简单语法 文章目录 Golang简单语法 GO语言 简介 Golang的格式检查 注释 主函数模板 `变量` 输入和输出语句 变量的类型 变量的定义和赋值 常量 流程控制 `函数` 内置函 ...

  6. C++11实战——多线程的日志类

    C++11实战--多线程的日志类 C++标准库的std::cout和std::ofstream重载了operator<<,单线程使用非常简单.但由于其并非线程安全,在多线程中使用则需要自己 ...

  7. java util logging_简单日志记录,使用java.util.logging

    jsp+servlet+JavaBean模式下,可以做个简单的日志记录,日志文件保存在服务器.(Tomcat) package controller; import java.io.File; imp ...

  8. SpringAOP Aspect注解实现简单日志功能

    SpringAOP实现简单日志功能 AOP(Aspect Oriented Programming):面向切面编程,Spring框架的重要组成部分,利用AOP我们可以将一些公用的业务逻辑部分抽取出来, ...

  9. C++ log日志类实现

    用处 log日志类,主要是用来记录异常 容易排查问题 简单实现了一个log日志记录系统 头文件 #include "stdafx.h"//Log日志 class YTLog {pu ...

最新文章

  1. adc采样的值跳动_嵌入式er必知:模数采样知多少(最全总结)
  2. 防止用户将表单重复提交的方法
  3. 使用Python语言开发爬虫有什么优势?
  4. Linux生成随机字符串
  5. 杨氏模量_用作癌症放疗定位膜的交联聚己内酯的结晶度与杨氏模量之间的关系研究|Global Challenges...
  6. Mint14体验报告 接近Windows的Linux
  7. 自动生成宏程序软件_圆周等分孔钻孔宏程序计算器
  8. android切换输入法工具类
  9. [写轮眼]QQ服务调校
  10. 20HZ信号发生器电路图
  11. ggplot2——双坐标轴?
  12. leetcode (Arranging Coins)
  13. 未能配置数据源:未指定“url”属性,无法配置嵌入的数据源。
  14. 文学随笔:《错过独白》
  15. 【Neural Style Transfer】 Fast Neural Style
  16. Docker国内镜像源设置
  17. Presto RBO之broadcast join与partitioned join类型的选择优化
  18. 中文序列标注系列(绪)
  19. 十款入门级微信小程序源码分享之三
  20. 自然搜索流量和手淘首页的区别,如何提升手淘首页流量

热门文章

  1. Android在Activity中动态增加xml自定义样式布局控件(引用xml布局文件和循环增加控件)
  2. 如何linux网页修改回80端口,linux下如何修改iptables开启80端口
  3. fwoa中做excel导入时page理解
  4. An attempt by a client to checkout a Connectio n has timed out报错解决
  5. “芯”视野主题系列—— 加密芯片在医疗、美容行业内的应用
  6. 将WORD文档中整篇文章的自动编号消除,但原序号不变
  7. VB获取windows各常用目录的函数(模块)
  8. 终极人机大战要来了?AI打星际2即将直播,DeepMind暴雪发出神秘预告
  9. 深度学习资源一网打尽!论文、数据集、框架、课程、图书等应有尽有
  10. 思必驰十年创业,(现在)是一家怎样的公司?