Golang 写日志到文件

Go 复制代码
package main

import (
	"log"
	"os"
	"time"
)

func main() {
	printLog("auto", "报警内容AA")
}

func printLog(filename string, content string) {
	t := time.Now().Format(time.DateOnly)
	file := filename + "." + t + ".log"
    //日志名称为 xx.2024-03-07.log

	f, err := os.OpenFile(file, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		log.Panic("打开日志文件异常")
	}
	defer f.Close() // 延迟关闭文件句柄
	log.SetOutput(f)
	log.Print(content)
}

OpenFile常用的打开模式:

os.O_RDONLY: 以只读方式打开文件

os.O_WRONLY: 以只写方式打开文件

os.O_RDWR: 以读写方式打开文件

os.O_APPEND: 在文件末尾追加数据

os.O_CREATE: 如果文件不存在则创建新文件

os.O_EXCL: 与O_CREATE一起使用时,要求文件必须是新创建的,如果文件已经存在则返回错误

os.O_SYNC: 打开文件用于同步I/O

os.O_TRUNC: 如果可能,打开文件时先将文件内容清空

相关推荐
不爱学英文的码字机器2 分钟前
Rust 并发实战:使用 Tokio 构建高性能异步 TCP 聊天室
开发语言·tcp/ip·rust
梅花145 分钟前
基于Django的博客系统
后端·python·django·毕业设计·博客·博客系统·毕设
redtro9526 分钟前
【开发备忘】GeoServer相关两则:发布时间维ImageMosaic+客户端WMS样式
java·开发语言·spring
..空空的人36 分钟前
C++基于websocket的多用户网页五子棋 ---- 模块介绍1
开发语言·c++·websocket
代码不停40 分钟前
Java模拟算法题目练习
java·开发语言·算法
彡皮1 小时前
基于Qt,调用千问7B大模型,实现智能对话
开发语言·qt·大模型·千问7b
Hilaku1 小时前
我为什么说全栈正在杀死前端?
前端·javascript·后端
朝新_1 小时前
【统一功能处理】SpringBoot 统一功能专题:拦截器、数据封装、异常处理及 DispatcherServlet 源码初探
java·spring boot·后端·spring·javaee
LiLiYuan.1 小时前
Arrays类和List接口的关联
java·开发语言·windows·python
q***46521 小时前
如何使用Spring Boot框架整合Redis:超详细案例教程
spring boot·redis·后端