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 ...
随机推荐
- JavaScript二代公民身份证号验证
身份证号码中的校验码是身份证号码的最后一位,是根据[中华人民共和国国家标准GB 11643-1999]中有关公民身份号码的规定, 根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本 ...
- .Net接入AzureOpenAI、OpenAI、通义千问、智谱AI、讯飞星火、文心一言大语言模型。
前言 现在在网上搜索.NET接入大模型的帖子很少,有些官方案例只提供java和python的SDK,所以有了这篇.Net的接入大模型文章,目前仅实现对话模型的调用. 这里仅举例通义千问,其他模型实现可 ...
- #KM算法#UVA1411 Ants
题目 在一个平面直角坐标系中,有 \(n\) 个黑点,\(n\) 个白点. 给出一种二分图匹配的方案,使得没有两条由黑白点连接的线段相交 分析 如果线段都不相交,根据三角形的两边之和大于第三边,那么线 ...
- 在DAYU200上实现OpenHarmony视频播放器
内容简介 本文介绍了如何使用ArkUI框架提供的video组件,实现一个具有简易播放器.通过VideoController控制器来控制倍速.全屏.进度调节等功能. 由于使用本地视频文件会影响App的包 ...
- Git 07 IDEA基本使用
IDEA 是目前最流行的 Java 集成开发环境,我们一般使用 Git 都是在 IDEA 上操作. 这里以 2021.3.2 版 IDEA 为例. 克隆项目 1.复制 Gitee 上的项目地址 2.点 ...
- 分析即服务(AaaS)是什么?终于有人讲清楚了
随着世界数据领域的地位和规模的不断扩大,大数据.人工智能和云计算正在结合起来,以分析即服务的形式为企业提供急需的喘息机会 . 让我们简要回顾一下 2010 年以来发生的事情. 这十年来我们见证了许多技 ...
- elasticsearch映射创建查询 和Spring Data ElasticSearch入门
Elasticsearch核心概念 Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document).然而它不仅 仅是存储,还会索引( ...
- openEuler20.03操作系统上安装部署MogDB2.1.1
openEuler20.03 操作系统上安装部署 MogDB2.1.1 本文出处:https://www.modb.pro/db/378319 openEuler 操作系统上安装 mogdb: 下载 ...
- Spring Cloud 核心组件之Spring Cloud Zuul:API网关服务
Spring Cloud Zuul:API网关服务 SpringCloud学习教程 SpringCloud API网关 Spring Cloud Zuul 是Spring Cloud Netflix ...
- 【7】SpringBoot是什么?SpringBoot的优缺点有哪些?
随着动态语言的流行(Ruby.Groovy.Scala.Node.js),Java 的开发显得格外的笨重,繁多的配置.低下的开发效率.复杂的部署流程以及第三方技术集成难度大. 在上述环境下,Sprin ...