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写日志函数的更多相关文章

  1. PHP写日志函数

    初学,写一个函数用于存储日志调试. function WriteLog($msg) { $filename = dirname(__FILE__) ."\\Debug.log"; ...

  2. golang 写日志到syslog

    应用程序可以通过 UNIX domain sockets, UDP or TCP,向syslog守护进程发送日志.syslog守护进程可以在远端. 这样,就可以不用单独收集应用程序的日志了. gola ...

  3. php 写日志函数

    function insertLog($operate,$description){ $sql="INSERT INTO operate(op,operate,description,cre ...

  4. php 写日志函数(原创)

    function write_log($msg,$isEcho=false,$path=''){ $path?'':$path='logs'.DIRECTORY_SEPARATOR.'log'.dat ...

  5. discuz函数解析--写日志

    public static function writelog($file, $log) { global $_G; $yearmonth = dgmdate(TIMESTAMP, 'Ym', $_G ...

  6. nginx如何写日志

    写日志函数为ngx_log_error_core,位于src/core/ngx_log.c:89行核心代码如下:while (log) { if (log->log_level < lev ...

  7. golang写业务代码,用全局函数还是成员函数

    在golang中,函数划分为全局函数和成员函数,在使用的时候,有种情况,会产生一些疑惑的,就是在写业务代码的时候,使用全局函数好像会比较方便,一般业务代码,都不会复用,都是针对特定的业务进行编程,要复 ...

  8. winston写日志(译)

    使用 有两种方式去使用winston,直接通过默认的logger,或者实例化自己的Logger,前者设计的目的是在你的应用程序中共享logger比较方便. 使用默认Logger 使用默认的logger ...

  9. Delphi 写日志的类

    unit uProgLog; interface uses Windows, SysUtils, SyncObjs; const C_LOG_LEVEL_TRACE = $; C_LOG_LEVEL_ ...

  10. 如何加速golang写业务的开发速度

    如何加速golang写业务的开发速度 不要忌讳panic golang写业务代码经常会被吐槽,写业务太慢了,其中最大的吐槽点就是,处理各种error太麻烦了.一个项目中,会有30%或者更多的是在处理e ...

随机推荐

  1. https安全性 带给im 消息加密的启发

    大家好,我是蓝胖子,在之前# MYSQL 是如何保证binlog 和redo log同时提交的?这篇文章里,我们可以从mysql的设计中学会如何让两个服务的调用逻辑达到最终一致性,这也是分布式事务实现 ...

  2. vue3中的样式为什么加上scoped不生效

    <style>标签添加scoped属性时,Vue会自动为该组件内的所有元素添加一个独特的数据属性,例如data-v-f3f3eg9.同时,它也会修改你的CSS选择器,使得它们只匹配带有这个 ...

  3. flutter系列之:按比例缩放的AspectRatio和FractionallySizedBox

    目录 简介 AspectRatio FractionallySizedBox 总结 简介 我们在构建UI的时候,为了适应不同的屏幕大小,通常需要进行一些自适应的配置,而最常见的自适应就是根据某个宽度或 ...

  4. 本周二晚19:00战码先锋第5期直播丨深入理解OpenHarmony系统启动,轻松踏上设备软件开发之旅

    OpenAtom OpenHarmony(以下简称"OpenHarmony")工作委员会首度发起「OpenHarmony开源贡献者计划」,旨在鼓励开发者参与OpenHarmony开 ...

  5. 本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现

    OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划项目自 2021 年 10 月 24 日上线以来,在开发者中引发高度关注. 成长计划 ...

  6. Qt6安装

    *:Qt现在基本都是在线安装了,但是下载的速度特别慢,所以此次记录下如何提速,快速安装 一.在线安装器下载 我用的这个(非官网):https://mirrors.tuna.tsinghua.edu.c ...

  7. Qt 操作注册表

    一.写入注册表 #include <QSettings> //实例 QSettings //参数 1:注册表位置 //参数 2:操作 windows 注册表 QSettings::Nati ...

  8. openGauss/MogDB配置IPv6

    openGauss/MogDB 配置 IPv6 openGauss/MogDB 支持多种网络接口,假如我们想在支持 IPv6 的网络上部署使用,只需简单操作即可,本文将介绍在 Centos 上如何配置 ...

  9. 【Java面试指北】单例模式

    单线程下的单例模式: public class Singleton { private static Singleton instance; private Singleton() {} public ...

  10. redis 简单整理——哨兵原理[三十一]

    前言 简单介绍一下哨兵的原理. 正文 一套合理的监控机制是Sentinel节点判定节点不可达的重要保证,Redis Sentinel通过三个定时监控任务完成对各个节点发现和监控: 1)每隔10秒,每个 ...