GO 日志追加记录
以追加的方式将程序输出到不同的日志文件,当日志文件超过10M大小时,自动清空文件。
package tools import (
"fmt"
"log"
"os"
) const logDir string = "/usr/local/dbmng/log/" func PathExists(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
} func CreateDir(dir string) {
if !PathExists(dir) {
err := os.Mkdir(dir, os.ModePerm)
if err != nil {
fmt.Printf("mkdir failed![%v]\n", err)
}
}
}
//日志分类,不同用途的日志记录于不同的文件
func LogInfo(msg string) {
fileName := "/usr/local/dbmng/log/info.log"
//logFile,err := os.Create(fileName)
LogClearFile(fileName)
logFile, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, )
defer logFile.Close() if err != nil {
log.Fatalln("open file error")
}
debugLog := log.New(logFile, "[Info]", log.LstdFlags)
debugLog.Println(msg)
} func LogInfoDbVip(msg string) {
fileName := "/usr/local/dbmng/log/info_dbvip.log"
LogClearFile(fileName)
logFile, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, )
defer logFile.Close() if err != nil {
log.Fatalln("open file error")
} debugLog := log.New(logFile, "[Info]", log.LstdFlags)
debugLog.Println(msg)
} // 日志大于10M 时清空一次,目录不存在时会自动创建,没有测试父级目录不存在会不会创建
func LogClearFile(fileName string) {
CreateDir(logDir)
if PathExists(fileName) {
fileInfo, _ := os.Stat(fileName)
//文件大小
filesize := fileInfo.Size()
if filesize > { // 大于10M时清空一次
os.Create(fileName)
}
}
} func LogWarning(msg string) {
fileName := "/usr/local/dbmng/log/warning.log"
LogClearFile(fileName)
logFile, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, )
defer logFile.Close() if err != nil {
log.Fatalln("open file error")
}
debugLog := log.New(logFile, "[Warning]", log.LstdFlags)
debugLog.Println(msg)
} func showUsing() {
fileName := "Info_First.log"
logFile, err := os.Create(fileName)
defer logFile.Close()
if err != nil {
log.Fatalln("open file error")
}
debugLog := log.New(logFile, "[Info]", log.Llongfile)
debugLog.Println("A Info message here")
debugLog.SetPrefix("[Debug]")
debugLog.Println("A Debug Message here ")
} /*
func main(){
LogInfo("普通测试")
LogInfoDbVip("第一次测试 ")
LogWarning("第二次测试 ")
}
*/
GO 日志追加记录的更多相关文章
- 浅析 Bigtable 和 LevelDB 的实现
在 2006 年的 OSDI 上,Google 发布了名为 Bigtable: A Distributed Storage System for Structured Data 的论文,其中描述了一个 ...
- 自定义log日志
Log.cs (这个已经不能用了,用下面的问题解决方案) using System; using System.Collections.Generic; using System.Web; u ...
- winfrom存储txt日志函数
参考微信支付SDK的代码,抽取出来的winform存储记事本日志函数: #region 存储日志 public string path = Application.StartupPath + &quo ...
- Raft 实现日志复制同步
Raft 实现日志复制同步 本篇文章以 John Ousterhout(斯坦福大学教授) 和 Diego Ongaro(斯坦福大学获得博士学位,Raft算法发明人) 在 Youtube 上的讲解视频及 ...
- 利用aop插入异常日志的2种方式
AOP是面向切面编程,利用这个技术可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分的耦合性降低,提高代码的可重用性,同时提高开发效率(来自百度百科). Spring AOP有两种实现方式,一 ...
- logging日志——Basic Logging Tutorial
在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有: filename,filemode,datefmt,format,level,strea ...
- logback框架之——日志分割所带来的潜在问题
源码: logback-test.xml文件如下,有2个需要我们重点关注的参数: fileNamePattern:这里的日志文件名变动的部分是年月日时,外加1个文件分割自增变量,警告,年月日时的数值依 ...
- logging——日志
导读 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,log ...
- C# 简单日志帮助类LogHelper
调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...
随机推荐
- Boost中实现线程安全
博客转载自: http://www.cnblogs.com/lvdongjie/p/4447142.html 1 boost原子变量和线程 #include <boost/thread.hpp& ...
- UltraISO制作系统ISO镜像
一.简介 UltraISO是一款功能强大而又方便实用的光盘映像文件制作/编辑/转换工具,它可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作成IS ...
- Overloaded的方法是否可以改变返回值的类型
摘要: 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同) Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载 ...
- p2501 [HAOI2006]数字序列
传送门 分析 https://www.luogu.org/blog/FlierKing/solution-p2501 对于第二问的感性理解就是有上下两条线,一些点在上面的线的上面或者下面的线的下面,然 ...
- 完全离线安装VSCode插件--Eslint
最近折腾了一番,总算把Eslint插件在离线的情况下安装好了.之前查了挺多,但是很多方法还是在没有完全离线的情况下进行的.之所以想完全离线安装,主要是因为我们工作的地方是禁止访问外网的,所以像直接执行 ...
- 具有增删改查功能的表格Demo--【BootStrap】
http://blog.csdn.net/wangmei4968/article/details/48437175
- 查询sql语句的执行时间
我们开启执行计划来看sql语句的执行效率,看下索引是否使用等 但是执行计划没有告诉我们执行时间,刚刚看了一个代码,可以自己计算执行时间的 Declare @d Datetime Set @d ...
- http respose status code (记)
1xx - 信息提示这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应. · 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.( ...
- onmouseover和onmouseout在GridView中应用 Ver2
第一个版本,可以参考:http://www.cnblogs.com/insus/archive/2009/03/13/1411057.html 以前的版本,是在Gridview的OnRowCreate ...
- linux影响上传文件大小的因素
主要是从三个方面 ①.php代码方面(这个无需说明) ②.php.ini配置 max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒max_input_t ...