golang写日志函数
package common
import (
"bufio"
"fmt"
"os"
"time"
)
/*自定义日志文件*/
func DebugLog(args ...interface{}) error {
var floderLog = "logs"
logName := floderLog + "/debug_log." + time.Now().Format("2006-01-02") + ".log"
if _, err := os.Stat(floderLog); err != nil {
if !os.IsExist(err) {
os.MkdirAll(floderLog, os.ModePerm)
}
}
logFile, err := os.OpenFile(logName, os.O_APPEND|os.O_RDWR|os.O_CREATE, os.ModePerm)
if err != nil {
fmt.Print("打开文件失败")
return err
}
defer logFile.Close()
tm := time.Now().Format("2006-01-02 15:04:05")
logBody := fmt.Sprintf("%s star============================================>\r\n", tm)
logFile.WriteString(logBody)
logBody = fmt.Sprintf("%+v\r\n", args)
logFile.WriteString(logBody)
logBody = fmt.Sprintf("\r\n")
logFile.WriteString(logBody)
return nil
}
//DebugLog2 自定义日志文件
/*
* dir 文件夹名字
* fileName 文件名字
* args 要写入的数据
*/
func Log(dir string, fileName string, args ...interface{}) error {
var floderLog = "logs"
if fileName != "" {
floderLog = floderLog + "/" + dir
}
logName := floderLog + "/" + fileName + time.Now().Format("2006-01-02") + ".log"
if _, err := os.Stat(floderLog); err != nil {
if !os.IsExist(err) {
os.MkdirAll(floderLog, os.ModePerm)
}
}
logFile, err := os.OpenFile(logName, os.O_APPEND|os.O_RDWR|os.O_CREATE, os.ModePerm)
if err != nil {
fmt.Println("打开文件失败 err:", err)
return err
}
defer logFile.Close()
tm := time.Now().Format("2006-01-02 15:04:05")
//方法一:os包
// logBody := fmt.Sprintf("%s star============================================>\r\n", tm)
// logFile.WriteString(logBody)
// logBody = fmt.Sprintf("%+v\r\n", args)
// logFile.WriteString(logBody)
// logBody = fmt.Sprintf("\r\n")
// logFile.WriteString(logBody)
//方法二:bufio包
writer := bufio.NewWriter(logFile)
logBody := fmt.Sprintf("%s star============================================>\r\n", tm)
writer.WriteString(logBody) //写入缓存
logBody = fmt.Sprintf("%+v\r\n", args)
writer.WriteString(logBody)
logBody = fmt.Sprintf("\r\n")
writer.WriteString(logBody)
writer.Flush() //从缓存写入文件
return nil
}
golang写日志函数的更多相关文章
- PHP写日志函数
初学,写一个函数用于存储日志调试. function WriteLog($msg) { $filename = dirname(__FILE__) ."\\Debug.log"; ...
- golang 写日志到syslog
应用程序可以通过 UNIX domain sockets, UDP or TCP,向syslog守护进程发送日志.syslog守护进程可以在远端. 这样,就可以不用单独收集应用程序的日志了. gola ...
- php 写日志函数
function insertLog($operate,$description){ $sql="INSERT INTO operate(op,operate,description,cre ...
- php 写日志函数(原创)
function write_log($msg,$isEcho=false,$path=''){ $path?'':$path='logs'.DIRECTORY_SEPARATOR.'log'.dat ...
- discuz函数解析--写日志
public static function writelog($file, $log) { global $_G; $yearmonth = dgmdate(TIMESTAMP, 'Ym', $_G ...
- nginx如何写日志
写日志函数为ngx_log_error_core,位于src/core/ngx_log.c:89行核心代码如下:while (log) { if (log->log_level < lev ...
- golang写业务代码,用全局函数还是成员函数
在golang中,函数划分为全局函数和成员函数,在使用的时候,有种情况,会产生一些疑惑的,就是在写业务代码的时候,使用全局函数好像会比较方便,一般业务代码,都不会复用,都是针对特定的业务进行编程,要复 ...
- winston写日志(译)
使用 有两种方式去使用winston,直接通过默认的logger,或者实例化自己的Logger,前者设计的目的是在你的应用程序中共享logger比较方便. 使用默认Logger 使用默认的logger ...
- Delphi 写日志的类
unit uProgLog; interface uses Windows, SysUtils, SyncObjs; const C_LOG_LEVEL_TRACE = $; C_LOG_LEVEL_ ...
- 如何加速golang写业务的开发速度
如何加速golang写业务的开发速度 不要忌讳panic golang写业务代码经常会被吐槽,写业务太慢了,其中最大的吐槽点就是,处理各种error太麻烦了.一个项目中,会有30%或者更多的是在处理e ...
随机推荐
- KingbaseES数据库适配Activiti7 didn't put process definition问题处理过程
一.Activiti介绍 Activiti是一个轻量级的java开源BPMN 2工作流引擎.目前以升级至7.x,支持与springboot2.x集成. 二.项目环境 Spring Boot版本2.2. ...
- Spring boot中拦截器的简单使用
1.创建自定义拦截器类:首先,你需要创建一个自定义的拦截器类,该类需要实现HandlerInterceptor接口.例如,你可以创建一个名为CustomInterceptor的类. import or ...
- JavaScript语法-字符串模板
目录 JavaScript 模板字符串 代码 问题 初学者容易出现的错误 调用函数的情况 JavaScript 模板字符串 代码 以下是index.js的部分代码: onShareAppMessage ...
- #后缀数组,单调队列#洛谷 2852 [USACO06DEC]Milk Patterns G
题目 给定一个长度为\(n\)的字符串,求出现至少\(k\)次的最长子串长度 分析 由于后缀排序后的LCP才是最长的,既然要求至少\(k\)次, 实际上也就是维护长度为\(k\)的height数组最小 ...
- OpenHarmony社区运营报告(2023年2月)
本月快讯 • 2023年2月25日,以"技术构筑万物智联"为主题的第一届开放原子开源基金会OpenAtom OpenHarmony(以下简称"OpenHarmony& ...
- Quanto: PyTorch 量化工具包
量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活,以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销. 减 ...
- 高并发报错too many clients already或无法创建线程
高并发报错 too many clients already 或无法创建线程 本文出处:https://www.modb.pro/db/432236 问题现象 高并发执行 SQL,报错"so ...
- 报表如何集成 echarts 官网示例图
Echarts,江湖人称一个纯 Javascript 的图表库,图形种类星罗棋布且个个颜值爆表,可以轻松驾驭 PC 和移动设备,与绝大部分浏览器都可称兄道弟,而且已然众多拥趸,还有不少报表对它采取了嫁 ...
- ip 记录路由选项
前言 准备整理网络这块,先把概念整理. ip记录路由选项,这个是做什么的呢? 比如说我们发的一条信息,从一端到另外一端经过了那些路由呢?这是一个问题啊. 这个ip记录路由选项就是来看这个问题的,当然这 ...
- Ubuntu下部署gitlab
1.安装gitlab服务 1.安装依赖 在ubuntu下使用快捷键ctrl+alt+T打开命令行窗口,然后运行下面命令 sudo apt update sudo apt-get upgrade sud ...