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) ...
随机推荐
- word2010自定义的多级列表编号变成黑块的解决办法
首先,看图说话 是的,当我保存Word再打开之后,我辛辛苦苦(没错,小白有罪,调来调去真辛苦)搞得多级列表编号变成了黑块,默默无言,只有泪千行,还好有万能的Google. 解决办法: 将光标移到黑块的 ...
- Centos部署flask项目
必备: Python2.7(ok) MySQL(ok) git supervisor virtualenv Gunicorn 阿里云服务器(最便宜的就好) 域名(国内万网,国外goDaddy) 我的P ...
- spring Boot(十九):使用Spring Boot Actuator监控应用
spring Boot(十九):使用Spring Boot Actuator监控应用 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台 ...
- 理解 neutron
之前大师发个结构图. understanding_neutron.pdf 自己走读了代码: 1. get_extensions_path() # 在/opt/stack/neutron/neutro ...
- python简说(十)json模块
常用模块: 一个python文件就是一个模块 1.标准模块,python自带的 2.第三方模块,需要安装 3.自己写的python文件 json,就是一个字符串 1.json转为字典 json_str ...
- Linux维护常用命令
1.查看Linux占用内存/CPU最多的进程 可以使用以下命令查使用内存最多的10个进程 #ps -aux | sort -k4nr | head -n 10可以使用以下命令查使用CPU最多的10个进 ...
- Codeforces 37D Lesson Timetable - 组合数学 - 动态规划
题目传送门 神奇的门I 神奇的门II 题目大意 有$n$组学生要上课2次课,有$m$个教室,编号为$1$到$m$.要确定有多少种不同的安排上课的教室的方案(每组学生都是本质不同的),使得它们满足: 每 ...
- 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...
- word2010使用记录
安装时提示: installer无法更新被保护的一个或多个文件, 解决方法是: 将三个dll文件,放在 c:\program files\common files\ms shared\web serv ...
- 前缀判断|2013年蓝桥杯B组题解析第五题-fishers
前缀判断 如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL. 比如:"abcd1234" 就包含了 &quo ...