当前位置: 首页 > news >正文

golang log模块使用

在Go中,log 包是用于输出日志信息的标准库。以下是一些基本的 log 包的使用示例:

  1. 基本用法:

    package mainimport ("log"
    )func main() {log.Println("This is a log message.")
    }

    运行程序,你会在控制台看到日志信息。

  2. 指定日志前缀:

    package mainimport ("log"
    )func main() {log.SetPrefix("MyApp: ")log.Println("This is a log message.")
    }

    这会输出类似于 MyApp: This is a log message. 的日志。

  3. 指定日志输出位置:

    package mainimport ("log""os"
    )func main() {logFile, err := os.Create("logfile.txt")if err != nil {log.Fatal("Cannot create log file: ", err)}defer logFile.Close()log.SetOutput(logFile)log.Println("This log message will be written to the file.")
    }

    这会将日志写入 logfile.txt 文件中。

  4. 指定日志级别:

    log 包默认支持 PrintFatal 和 Panic 三个级别。

    package mainimport ("log"
    )func main() {log.Print("This is a regular log message.")log.Fatal("This is a fatal log message.")log.Panic("This is a panic log message.")
    }

    Fatal 会输出消息并调用 os.Exit(1)Panic 会输出消息并调用 panic

  5. 自定义日志记录器:

    package mainimport ("log""os"
    )var (infoLog    = log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)warningLog = log.New(os.Stdout, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile)
    )func main() {infoLog.Println("This is an info message.")warningLog.Println("This is a warning message.")
    }

    在这个例子中,我们创建了两个不同的日志记录器,一个用于信息级别,另一个用于警告级别。自定义日志记录器可以定制输出格式和其他属性。

     6. 格式化输出:
在Go的标准库中,log 包的日志输出默认是简单的文本格式。如果你想要更精细的控制和格式化输出,你可以使用 fmt 包进行格式化,然后将格式化后的字符串传递给 log.Printlog.Printflog.Println 等函数。

以下是一个使用 fmt 包格式化输出的示例:

package mainimport ("fmt""log"
)func main() {name := "John"age := 30// 使用 fmt.Sprintf 进行字符串格式化message := fmt.Sprintf("Name: %s, Age: %d", name, age)// 输出格式化后的消息log.Print(message)
}

上面的例子中,fmt.Sprintf 用于格式化字符串,然后将格式化后的字符串传递给 log.Print。这允许你按照需要创建任意格式的日志消息。

如果你想要更多的格式化控制,你也可以使用 log.Printf,该函数使用格式字符串和参数列表,类似于 fmt.Printf

package mainimport ("log"
)func main() {name := "John"age := 30// 使用 log.Printf 进行字符串格式化log.Printf("Name: %s, Age: %d", name, age)
}

这样,你可以使用类似于 fmt.Printf 的占位符进行格式化,如 %s%d 等。

这只是 `log` 包的基本用法示例。在实际应用中,你可能需要更复杂的日志记录、滚动日志文件等功能。有时候,使用第三方的日志库,如 `logrus`、`zap` 等,可以提供更丰富的功能和更灵活的配置。 

相关文章:

golang log模块使用

在Go中,log 包是用于输出日志信息的标准库。以下是一些基本的 log 包的使用示例: 基本用法: package mainimport ("log" )func main() {log.Println("This is a log message.") } 运行程序,你会在控制台看到日…...

软件开发中的抓大放小vs极致细节思维

最近在开发过程中,遇到了好多次 “这个需求点这次要不要做?” 的问题, 主要有两方阵营,比如以研发主导的 “这次先不做、等必要的时候再做” ,另外一方是以PM主导的 “这个不做需求不完整,可能影响用户体验…...

java文件上传以及使用阿里云OSS

JavaWeb 文件上传本地存储阿里云OSS配置文件 yml配置文件 文件上传 前端页面三要素: 表单项type“file” 表单提交方式post 表单的enctype属性multipart/form-data 本地存储 保证上传的文件不重复 //获取原始文件名String originalFilename image.getOriginalFi…...

相关性分析和作图

相关的类型 1. Pearson、Spearman和Kendall相关 Pearson 积差相关系数衡量了两个定量变量之间的线性相关程度。(连续) Spearman等级相关系数则衡量分级定序变量之间的相关程度。(分类) Kendall’s Tau 相关系数也是一种非参数的…...

AlphaFold的原理及解读

1、背景 蛋白质是生物体内一类重要的生物大分子,其结构复杂多样,蛋白质的结构对于理解其功能和参与的生物学过程具有重要意义。从生物学角度上看,蛋白质的结构可以分为四个层次:初级结构、二级结构、三级结构和四级结构。 初级结…...

【ChatGLM3-6B】Docker下快速部署

【ChatGLM2-6B】小白入门及Docker下部署 前提下载安装包网盘地址 开始安装加载镜像启动镜像进入容器启动模型交互页面访问页面地址 前提 安装好了docker安装好了NVIDIA显卡16G 下载安装包 网盘地址 ​ 这里因为网盘上传文件有大小限制,所以使用了分卷压缩的方式…...

两部手机数据传输后备忘录不见了怎么回事

想必很多人都遇到过,当两部手机进行备忘录数据传输后,突然发现备忘录不见了,这让人不禁着急上火,我也曾经遇到过这种事情导致很多重要的内容都丢失了。 一般出现这种情况可能是因为,两部手机使用的是不同的云服务&…...

【Unity入门】LayerMask小结

LayerMask常用的几种方法 LayerMask.GetMask 根据 层名称 获取其层遮罩值 遮罩值 2^层索引 假设 UserLayerA 和 UserLayerB 是第十层和第十一层。 这两个层会具有 User Layer 值 10 和 11。若要获取其层遮罩值, 可以将其名称传入 GetMask。参数可以是 其名称的列…...

mysql按年、季度、月,统计

以下是按年、按季度和按月统计SQL查询语句: 按年统计: SELECTds.checker,YEAR(ds.create_time) AS settleYear,SUM(ds.quantity) AS quantity,SUM(ds.approval_price) AS approvalPrice FROMdata_settle ds WHEREds.delete_flag 0AND ds.approval_sta…...

Python的换行和转义:深入理解代码排版与字符串处理

更多Python学习内容:ipengtao.com 大家好,我是涛哥,今天为大家分享 Python的换行和转义:深入理解代码排版与字符串处理,全文2700字,阅读大约8分钟。 在Python编程中,正确使用换行和转义字符是保…...

dart多线程双向通信的案例----【小学4年级课程】

下面是运行后的打印顺序 I/flutter (20170): 上班 I/flutter (20170): 这里是校长室:main I/flutter (20170): 这里是饭堂:fantang1 I/flutter (20170): 这里是收发室--检查小孩发回去给他妈妈的信息是:我是秘书的儿子,我来到在校长室了。校长今晚想吃羊…...

每日一练:简易计算器

1. 题目 设计实现一个简易的计算器,可以进行加减乘除的计算。可以考虑通过GUI和命令行输入等方式实现。 2. 设计思路 创建一个简单的用户界面,可以使用 Python 的 Tkinter模块。在界面上放置按钮,每个按钮代表一个数字、运算符或其他功能。…...

Jmeter和Testlink自动化测试框架研究与实施

摘 要 目前基于Jmeter的接口自动化测试框架,大多只实现脚本维护和自动调度,无法与Testlink进行互通,实现测试方案与自动化实施流程连接,本文基于Testlink、Jmeter、Jenkins实现:通过Testlink统一维护接口自动化测试用…...

MethodArgumentNotValidException 与 ConstraintViolationException

MethodArgumentNotValidException 和ConstraintViolationException 都是用于处理参数校验异常的异常类,但它们在不同的上下文中使用。 1. MethodArgumentNotValidException: - MethodArgumentNotValidException 是在 Spring MVC 或 Spring Boot 中处…...

【数学】旋转矩阵

参考链接 OpenGL from OpenGL.GL import * from OpenGL.GLUT import * from math import * import numpy as np def draw_axes():glClear(GL_COLOR_BUFFER_BIT)# 绘制坐标轴glColor3f(1.0, 1.0, 1.0) # 设置坐标轴颜色为白色glBegin(GL_LINES)glVertex2f(-1.0, 0.0) # x 轴g…...

Python与设计模式--中介者模式

23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...

后台管理系统开源项目

最近项目没有什么事做,就自己整理,修改了一些vue2,react的后台管理系统项目,方便以后有需要可以直接提取,当然也方便了大家 vue2技术栈 lyl-vueProjectAdmin: vue2后台管理系统 react技术栈 lyl-reactAdminProject:…...

电子印章管理系统:是什么、3个平台推荐

说到印章,相信看过近现代电视剧的人都见过,一般在订立合约时最常用到,双方在合约上加盖印鉴,即代表着合约的成立。 我小时候还见过我父亲的印章,只是随着时代的发展,印章因为不易携带,容易被盗…...

现货黄金区间交易的两个要点

在现货黄金市场中,我们常碰到横盘区间行情。有区间,就终究会出现突破,因为金价不可能缺乏方向而一直在区间内运行。那既然要突破,我们又应当如何应对和交易呢?下面我们就来讨论一下。 切忌在突破发生时马上跟随突破方向…...

安卓底部导航栏BottomNavigationView

目录 1. BottomNavigationView (1) 准备BottomNavigationView使用的菜单资源文件 (2) 准备颜色选择器 (3) BottomNavigationView控件设置 (4) 在Java代码中设置OnItemSelectedListener监听器 (5) 与Fragment配合 2. BottomTabBar 实现安卓底部导航栏,google为…...

ANSYS APDL循环建模中的高效数据交互技巧

1. ANSYS APDL循环建模与MATLAB数据交互的核心价值 在工程仿真领域,ANSYS APDL的循环建模能力堪称自动化分析的利器。我曾在某型风力发电机叶片参数化分析项目中,用循环建模一次性完成了178组不同翼型参数的强度计算,整个过程从原来的两周缩短…...

思科ITN 7.00 PTSA综合实验通关指南:多版本识别与满分配置解析

1. 思科ITN 7.00 PTSA实验版本差异全解析 第一次接触思科ITN 7.00 PTSA实验的同学,往往会被随机分配的不同实验版本搞得晕头转向。我当年备考时就遇到过这种情况——明明照着同学的满分答案配置,最后却连基础网络连通都做不到。后来才发现,原…...

Agent 在招投标场景能解决哪些问题?——2026年招投标数智化转型深度解析

站在2026年4月的节点回望,招投标行业正经历着自“电子化交易”以来最深刻的一场变革。随着《关于加快招标投标领域人工智能推广应用的实施意见》等政策的落地,AI Agent(智能体)已不再是实验室里的概念,而是成为了重构招…...

别再手动改指纹了!用这个Chrome 116内核的免费工具,5分钟搞定WebRTC、Canvas等关键指纹伪装

浏览器指纹伪装实战指南:5分钟实现全方位隐私保护 每次打开电商网站,首页推荐的商品总是精准得令人毛骨悚然;刚搜索过某个产品,社交平台立刻出现相关广告——这些现象背后,是网站通过浏览器指纹对用户进行的追踪。传统…...

Reportr安全配置指南:如何保护你的个人数据仪表板

Reportr安全配置指南:如何保护你的个人数据仪表板 【免费下载链接】dashboard Your lifes personal dashboard. 项目地址: https://gitcode.com/gh_mirrors/das/dashboard Reportr是一个开源的个人数据仪表板项目,帮助用户追踪和可视化生活中的各…...

西门子ST20 PTO脉冲与台达ASDA-A2伺服驱动器的精准运动控制实践

1. 西门子ST20与台达ASDA-A2的硬件连接实战 第一次接触西门子ST20的PTO脉冲控制台达伺服时,我也被那一堆接线端子搞得头晕。后来发现只要抓住几个关键点,接线就像拼乐高一样简单。先说最重要的安全规范:务必在断电状态下操作,伺服…...

AI入门必看|零基础搞懂人工智能核心定义,避开入门误区

摘要:本文专为AI零基础小白打造,用大白话拆解人工智能的核心定义、发展脉络,厘清新手最易混淆的概念,帮你快速建立对AI的正确认知,迈出入门第一步,拒绝被专业术语劝退。关键词:人工智能入门&…...

查看Ubuntu的版本

执行命令 cat /etc/issue 可以查看Ubuntu的版本,例如:...

点云深度学习系列博客(六): 从注意力到三维感知——Point Transformer的架构演进与实战解析

1. 从NLP到三维视觉:注意力机制的跨界之旅 第一次看到Transformer在点云上跑通实验结果时,我正对着屏幕上的3D分割结果发呆——那些精确到毫米级的物体边界,完全颠覆了我对传统点云处理方法的认知。这要归功于注意力机制的神奇迁移能力&#…...

Visio中高效导出无白边SVG矢量图的完整指南

1. 为什么需要无白边SVG矢量图? 写论文或者做演示文稿时,经常需要在文档中插入各种图表。Visio作为一款专业的绘图工具,能够帮助我们快速创建流程图、架构图等专业图形。但直接将Visio图形导出为SVG格式时,往往会发现图片周围有大…...