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(""); 项目添加 ...
随机推荐
- Entity Framework Tutorial Basics(38):Explicit Loading
Explicit Loading with DBContext Even with lazy loading disabled, it is still possible to lazily load ...
- Spring学习大纲
1.BeanFactory 和 FactoryBean? 2.Spring IOC 的理解,其初始化过程? 3.BeanFactory 和 ApplicationContext? 4.Spring B ...
- 使用JMeter的Java Sampler轻松定制自己的benchmark
做性能测试,接口测试,非常好 转自 http://www.iteye.com/topic/1123432 以前碰到更多的是WEB APP的性能测试,也许用得最多的是Loadrunner, Web S ...
- C指针的解析
这是我从网上转载的一篇关于C指针的文章,方便自己以后回顾,自己添加修改部分内容 ,不对请指正 Attention:指针是指针变量 ,数组是指针常量 第一章 指针的概念 指针是一个特殊的变量,它里面存 ...
- pthread中如何追踪stack over flow
通常在程序挂掉的时候我们会catch 他们挂掉的signal,然后在signal中打印出当时的一个stack,来方便问题调查, 但是在stack overflow的情况发生时,会没有拿到stack.s ...
- gRPC官方文档(概念)
文章来自gRPC 官方文档中文版 gRPC 概念 本文档通过对于 gRPC 的架构和 RPC 生命周期的概览来介绍 gRPC 的主要概念.本文是在假设你已经读过文档部分的前提下展开的.针对具体语言细节 ...
- redis-淘汰策略
将redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据.默认情况下,memcached就是这种方式. LRU是Redis唯一支持的回收算法. maxmemory配置指令 maxmemory用于 ...
- GET/POST/g和钩子函数(hook)
GET请求和POST请求: 1. get请求: * 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求. * 传参:get请求传参是放在url中,并且是通过`?`的 ...
- 4、OpenCV Python 像素运算
__author__ = "WSX" import cv2 as cv import numpy as np #前提需要运算的图像大小和类型完全相同 #算术运算 加减乘除 #逻辑运 ...
- P1505 [国家集训队]旅游
\(\color{#0066ff}{题 目 描 述}\) Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了 ...