Golang简单日志类
实现简单的日志写入文件功能
运行环境:
golang1.4.2+win7x64
golang1.4.2+centos6.5×64
package Helper import (
“fmt”
“log”
“os”
“time”
) /*简单日志类*/
/*注意,这个类不是线程安全的*/
type LogFile struct {
mFile *os.File
mLogger *log.Logger
} //创建日志对象
func NewLogFile() *LogFile {
return &LogFile{mFile: nil, mLogger: nil}
} //开始log,参数fileName为日志文件名
func (logFile *LogFile) BeginLogFile(fileName string) error {
strTime := time.Now().Format(“20060102_150405″) //按照这种格式进行格式化 //GetCurPath()得到当前执行文件路径,参考前一篇博文,得到类似于这样的一个文件名称RSvr_20150130_180108.log
logFileName := GetCurPath() + fileName + “_” + strTime + “.log”
mFile, err := os.OpenFile(logFileName, os.O_RDWR|os.O_CREATE, ) if err != nil {
return err
} logFile.mLogger = log.New(mFile, “\r\n”, log.Ldate|log.Ltime|log.Llongfile) return nil
} //结束log,释放资源
func (logFile *LogFile) EndLogFile() {
if logFile.mFile != nil {
logFile.mFile.Close()
}
} //记录各种信息
//记录Fatal
func (logFile *LogFile) LogFatal(msg string, err error) {
if err != nil {
fmt.Printf(“Fatal: “+msg+” %v\n”, err) //显示出来
logFile.mLogger.Fatalf(“Fatal: “+msg+” %v\n”, err) //记录到文件里
}
} //记录Error
func (logFile *LogFile) LogErr(msg string, err error) {
if err != nil {
fmt.Printf(“Err: “+msg+” %v\n”, err) //显示出来
logFile.mLogger.Printf(“Err: “+msg+” %v\n”, err) //记录到文件里
}
} //记录msg
func (logFile *LogFile) LogMsg(msg string) {
fmt.Printf(“Msg: %v\n”, msg) //显示出来
logFile.mLogger.Printf(“Msg: %v\n”, msg) //记录到文件里
}
使用方法如下:
①创建一个全局变量
var logFile *Helper.LogFile = nil //记录文件
②创建对象并使用
//创建记录文件
logFile = Helper.NewLogFile()
err := logFile.BeginLogFile(“RSvr”) //TODO err判断 //TODO 线程安全 //记录信息
logFile.LogMsg(“RSvr Server Running!”) //释放
if logFile != nil {
logFile.EndLogFile()
}
Golang简单日志类的更多相关文章
- C++ 最简单的日志类
最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...
- 简单实用的日志类CLog (Python版)
#coding: utf-8 import time ''' /***************************************************************** Fu ...
- android Loger日志类(获取内置sd卡)
Android手机自带内部存储路径的获取 原文地址:http://my.oschina.net/liucundong/blog/288183 直接贴代码: public static String g ...
- Golang的日志处理
整个看了一圈下来,感觉Golang的日志包在管理多线程安全的情况下,提供了最小粒度的工具.并没有提供什么复杂的过滤器之类的生成. 实现了一个demo来记录一下日志分类日志打印等实现: package ...
- WorldWind源码剖析系列:日志类Log
Utility工程中的日志类Log主要用来输出Debug状态下的调试信息.该类的类图如下: 日志类Log中使用到的类和内嵌结构体类型主要有以下这些: public class LogEventArgs ...
- java基础之JDBC三:简单工具类的提取及应用
简单工具类: public class JDBCSimpleUtils { /** * 私有构造方法 */ private JDBCSimpleUtils() { } /** * 驱动 */ publ ...
- SLF4J 简单日志门面 介绍和使用
参考:http://singleant.iteye.com/blog/934593 http://liuzidong.iteye.com/blog/776072 介绍: 简单日记门面(s ...
- PHP打印日志类
PHP简单封装个打印日志类,方便查看日志: <?php /** * Created by PhpStorm. * User: zenkilan * Date: 2019/9/26 * Time: ...
- muduo网络库源码学习————日志类封装
muduo库里面的日志使方法如下 这里定义了一个宏 #define LOG_INFO if (muduo::Logger::logLevel() <= muduo::Logger::INFO) ...
随机推荐
- oracle 11g enq: JI – contention等待事件
最近使用物化视图同步的环境在大量刷新的时候频繁出现enq: JI – contention等待事件,经查: JI enqueue is acquired in exclusive mode on th ...
- Linux 命令梳理
Linux 命令梳理 待梳理命令 nohup 用户管理 useradd 新建用户 sudo useradd {user name} -s /bin/bash -d /data/{user name} ...
- 猜字母游戏(Java)
我的代码: package day20181025; import java.util.Arrays; import java.util.Scanner; /** * 猜字母 * @author Ad ...
- [error] 2230#2230: *84 client intended to send too large body: 1711341 bytes
centos7 lnmp部署知乎上传主体报错 2019/01/17 18:55:27 [error] 2230#2230: *89 open() "/code/wordpress/favic ...
- Install Virtualbox on ubuntu
1.Use the command: sudo apt-get install virtualbox
- topcoder srm 680 div1
problem1 link 将限制按照$x$排序.那么$[upTo_{i}+1,upTo_{i+1}]$中数字个数为$quantity_{i+1}-quantity_{i}$.然后进行动态规划.$f[ ...
- sqlserver无法在数据库上放置锁
由于无法在数据库 ' ' 上放置锁,ALTER DATABASE 失败.请稍后再试.消息5069,级别16,状态1,第一行ALTER DATABASE 语句失败. 解决方法: 新建查询,通过下面SQL ...
- k倍区间 前缀和【蓝桥杯2017 C/C++ B组】
标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...
- 3545: [ONTAK2010]Peaks 平衡树,最小生成树
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3545 离线询问,按照权值排个序 就是在克鲁斯卡尔时候维护个treap,到时候挨个查询一下就好 ...
- win10中命令操作Zookeeper
目录 zk客户端命令: 连接: 命令: 四字命令: 常用命令: 返回参数说明: 参考: zk客户端命令: 连接: C:\Users\qhong\Desktop $ zkCli.cmd -server ...