商业公链之区块链技术使用的常见库(二)------GO语言日志库"github.com/cihub/seelog"

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0 Linux系统图形化界面安装WebLogic 14.1.2.0.0版本 阅读详情

GO语言日志库"github.com/cihub/seelog"

Seelog可以设置不同级别的日志库,过滤输出设定级别的日志,输出不同格式日志文件到终端或文件,根据触发日志名或者函数名区分不同日志,实现网络转发或者定期删除日志等功能。

日志级别分为:Trace(相比debug范围更广,适合release),debug(只适合debug开发版本,调试时更详细的了解系统运行状态),info(重要输出信息:用来反馈系统的当前状态给最终用户的,用于产品),warn(可修复,系统可继续运行下去),Error(可修复性,但无法确定系统会正常的工作下去),Critical(错误已经无法修复,必须停止运行,防止程序破坏)。

1.安装seelog日志库:

go get github.com/cihub/seelog

2.导入日志库:

import  log "github.com/cihub/seelog"

3.使用日志配置文件,生成记录器:

 logger, err := log.LoggerFromConfigAsFile("seelog.xml")

4.使用新的记录器进行替换记录:

log.ReplaceLogger(logger)

5.打印info级别日志:

log.Info("Hello from Seelog!")

6.启用协程刷新产生日志:

 defer log.Flush()

下面我们来介绍以下日志库配置文件seelog.xml,包括三个部分<exception> 是为特定的程序文件(filepattern)或函数(funcpattern)设定特殊的日志规则,<outputs>指定日志输出配置,<formats> 定制日志的输出格式:

<!-- type 设置记录器类型 https://github.com/cihub/seelog/wiki/Logger-types-reference

minlevel 设置日志最低级别; maxlevel 设置日志的最高级别,也可以通过 <seelog levels="trace,info,critical"> 设置日记级别,asynctimer异步记录 asyncinterval时间间隔大于日志消息-->

<seelog type="asynctimer" asyncinterval="5000000" minlevel="debug" maxlevel="error">

    <exceptions>

        <!-- <exception> 是为特定的程序文件(filepattern)或函数(funcpattern)设定特殊的日志规则 -->

        <exception funcpattern="*main.test*Something*" minlevel="info"/>

        <exception filepattern="*main.go" minlevel="error"/>

    </exceptions>



    <!-- <outputs> formatid 指定日志输出的格式(格式在<formats>标签中定义) -->

    <outputs formatid="main">

        <!-- <console> 标签表示输出到终端 -->

        <console/>



        <!-- <splitter> 用于细分<outputs>日志格式,内部支持:file(文件), rollingfile(滚动文件,自动清除过期),

        buffered(日志写到内存再写到文件), smtp(发送日志到邮件), con(网络转发) -->

        <splitter formatid="format1">

            <!-- log.log, log2.log将按<formats>标签中的id="format1"格式写入 -->

            <file path="log.log"/>

            <file path="log2.log"/>

        </splitter>

        <splitter formatid="format2">

            <file path="log3.log"/>

            <file path="log4.log"/>

        </splitter>



        <!-- <rollingfile>滚动文件(定期清除过期日志)

        formatid: 指定日志格式; type="size" 按大小; maxsize: 单日志文件最大大小; maxrools: 最大文件数 -->

        <rollingfile formatid="someformat" type="size" filename="./log/roll.log" maxsize="100" maxrolls="5" />



        <!-- <buffered> 将日志先存在内存中,定期写入文件,适合日志并发量较大或 IO 比较紧张的场合

        size: 缓存大小; flushperiod: 缓存间隔(毫秒) -->

        <buffered formatid="testlevels" size="10000" flushperiod="1000">

            <file path="./log/bufFileFlush.log"/>

        </buffered>



        <!-- <filter>用于单独处理某级别日志

        过滤日志,把级别是error的通过邮件smtp方式发送出去(一般会发给相应的运维人员) -->

        <filter levels="error">

            <file path="./log/error.log"/>

            <smtp senderaddress="noreply-notification-service@none.org"

                  sendername="Automatic notification service"

                  hostname="mail.none.org"

                  hostport="587"

                  username="nns"

                  password="123">

                <recipient address="john-smith@none.com"/>

                <recipient address="hans-meier@none.com"/>

            </smtp>

            <!-- 按tcp4网络协议发送日志 -->

            <conn net="tcp4" addr="server.address:5514" tls="true" insecureskipverify="true" />

        </filter>



    </outputs>



    <!-- <formats> 定制日志的输出格式

    https://github.com/cihub/seelog/wiki/Format-reference -->

    <formats>

        <format id="main" format="%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n"/>

        <format id="someformat" format="%Ns [%Level] %Msg%n"/>

        <format id="testlevels" format="%Level %Lev %LEVEL %LEV %l %Msg%n"/>

        <format id="usetags" format="<msg>%Msg</time>"/>

        <format id="format1" format="%Date/%Time [%LEV] %Msg%n"/>

        <format id="format2" format="%File %FullPath %RelFile %Msg%n"/>

    </formats>

</seelog>

大体框架:

<!-- 我只需要把日志按指定格式输出到终端 -->

<seelog type="asynctimer" asyncinterval="1000000" minlevel="debug" maxlevel="error">

    <outputs formatid="main">

        <!-- 仅输出到终端 -->

        <console/>

    </outputs>

    <formats>

        <!-- 设置格式 -->

        <format id="main" format="%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n"/>

    </formats>

</seelog>



<!-- ****** 我是分割线 ***** -->



<!-- 现在我想把日志输出到终端同时也把日志输出到文件 -->

<seelog type="asynctimer" asyncinterval="1000000" minlevel="debug" maxlevel="error">

    <outputs formatid="main">

        <console/>

        <!-- 输出到文件,且不同于终端的日志格式 -->

        <splitter formatid="format1">

            <file path="log.log"/>

        </splitter>

    </outputs>

    <formats>

        <!-- 设置格式 -->

        <format id="main" format="%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n"/>

        <format id="format1" format="%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n"/>

    </formats>

</seelog>

示例程序:阅读原文,用法文档:https://godoc.org/github.com/cihub/seelog#Info

希望大家关注我的微信公众号,日更一篇区块链技术博客不易,有疑问可以后台留言。

BGE(BAAI General Embedding)模型详解 BGE(BAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的通用文本嵌入模型系列,旨在为各种自然语言处理任务提供高质量的向量表示。 阅读详情

相关推荐

【opencv3 学习记录】第二章 读取显示保存视频

一:捕获视频函数 1.函数:cv2.VideoCapture(参数) 2.参数说明: (1)开启摄像头:参数一般为0,你可以通过设置成 1 或 者其他的来选择别的摄像头。 (2)从文件夹中获取视频:参数为字符串形式的文件路径 3.示例: cap = cv2.VideoCapture(0) #cap:存放参数 二:读取视频函数 1.函数:cap.read() 2.函数说明: (1)cap.read 中cap与捕获视频函数存放函数一致,可以自己命名.括号一般不用填写 (2)ret,f

m0_64448543的博客 3272

seelog使用简介

1.安装"github.com/cihub/seelog" go getgithub.com/cihub/seelog 在安装之前需要先安装一个git:Git-2.29.2.3-64-bit.exe 下载地址https://blog.csdn.net/stephen_curry300/article/details/109938273 import ( log "github.com/cihub/seelog" "fmt" "time" ) 2.xml文件配置 //异步.

chenqianghqu的博客 1221

中兴问天 BE7200MAX SFP 光口用华为猫棒替代光猫完整配置教程

PPPoE 账号密码:若原光猫为 Route 模式,在宽带设置页可见用户名,密码需按 F12 打开浏览器开发者模式,点击密码输入框,查看代码中 “value=” 后的内容即为明文密码。若仍失败,核对 PON 类型是否与运营商网络匹配。PON 认证信息:LOID(逻辑 ID,部分地区含密码)、设备 SN 码(标签或设备信息页)、PON 类型(GPON/EPON,运营商网络类型)。电脑保持与路由器连接,访问路由器管理地址(默认通常为 192.168.5.1,可参考路由器说明书),登录后台。

Gulper_Eel的博客 3329

golang第三方日志包seelog配置文件详解

开发任何项目,都离不开日志,配好自己的项目日志输出,往往是开发项目的前提。在golang中,seelog应该是比较有名的日志处理包了,功能非常强大,seelog官方文档 一、seelog主要功能 下面我们看看seelog有啥强大 设置不同级别的日志; 输出到终端或文件; 过滤指定级别日志; 定义多种不同的日志输出格式; 根据触发日志的文件名或者函数名来区别输出日志; 通过 SMTP 或 T...

每天的表现,未来的必然! 1万+

MATLAB实战:纯电动汽车动力性仿真从入门到精通(附完整代码)

本文提供了一份基于MATLAB的纯电动汽车动力性仿真从入门到精通的实战指南。通过理论建模与代码实战相结合,详细讲解了如何构建行驶阻力模型、驱动力平衡方程,并利用MATLAB脚本完整实现了最高车速、加速时间和最大爬坡度三大核心性能指标的仿真计算。文章附有完整代码,帮助工程师快速掌握纯电动汽车动力性仿真的核心技能,为设计与优化提供高效的数字工具。

weixin_29074409的博客 368

晶圆表面缺陷检测现状概述

凹坑,凸起,尖角,沟槽),使用光束对晶圆进行照射,收集反射光和散射光信息进行缺陷判断,进一步可分为无图案晶圆表面检测和宏观缺陷检测设备。KLA使用SR-DUV光,检测精度在10nm以下。扫描电子显微(电子束和晶圆表面产生二次电子,X射线等)获取高分辨率的图像,然后用图像处理表面缺陷(凹坑,凸起,尖角,沟槽等)表面容貌和材料信息,分辨率可达5-10nm。晶圆表面缺陷检测设备主要检测晶圆外观呈现出来的缺陷,损伤、毛刺等缺陷,主要设备供应商KLA,AMAT,日立等,其中KLA在晶圆表面检测设备占有市场52%左右。

qq_36786800的博客 1万+

H-Viewer站点规则分享:如何导入与使用社区精选的优质内容源

H-Viewer是一款功能强大的Android订阅阅读器应用,它通过选择器和正则表达式来获取网络内容,让用户能够自定义自己的阅读体验。本文将详细介绍如何导入和使用社区精选的站点规则,帮助你轻松扩展H-Viewer的内容来源。 ## 了解H-Viewer站点规则 站点规则是H-Viewer的核心功能之一,它定义了应用如何从特定网站获取和解析内容。每个站点规则通常包含网站的基本信息、内容选择器、正

gitblog_01004的博客 626

【Origin+Python】使用External Python批量出图代码参考2

不使用part2 的代码,自己打开一个origin2022的界面。这里主要介绍一些进阶代码以及使用盗版origin要如何。3 批量绘制相同设置的曲线图。然后就是没有水印的图片了。

zeng001201的博客 1908

Paddy插件开发指南:如何为你的Sketch工作流定制自动化规则

Paddy是一款强大的Sketch插件,它能为你的设计图层提供自动化的内边距、间距和对齐功能。无论你是UI设计师还是前端开发者,掌握Paddy插件的定制开发都能显著提升你的工作效率,让设计工作流更加顺畅高效。 ## 为什么选择Paddy插件进行定制开发? Paddy插件之所以成为设计师的得力助手,源于其独特的优势: - **完全自动化**:不同于其他需要手动触发的插件,Paddy会在你操作图

gitblog_00097的博客 464

华为OD机试真题-查找单入口空闲区域(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【查找单入口空闲区域】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 查找单入口空闲区域。

qq_45776114的博客 1268

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

go第三方日志系统-seelog-Basic sections

https://github.com/cihub/seelog 文档学习:https://github.com/cihub/seelog/wiki 1.安装: go get github.com/cihub/seelog 2.快速启动 Seelog的设计非常方便。它的默认配置和包级别的日志记录器是现成的,所以开始你只需要两行代码: package main im...

weixin_34259559的博客 434

路径跟踪 | 图解路径跟踪PID算法(附ROS C++/Python/Matlab仿真)

PID控制是一种经典的控制算法,广泛应用于各种工业场景。在基于PID的局部路径规划中,希望机器人能快速跟踪上预设的轨迹。本文介绍PID控制的基本原理,并基于PID控制律设计路径跟踪算法,最后通过ROS C++/Python/Matlab进行仿真实现,加深理解

FRIGIDWINTER的博客 1万+

go 日志(log4 + logrus)

1.使用%v打印错误, log.Error("net.ListenTCP(\"tcp4\",\"%s\")error(%v)",bind,err) type TestV struct{ iday int64 strInfo string } testV := &TestV{iday : 50, strInfo : "xiaoyu"} log.Error("%v", *t...

xiaoxiaoyu85的专栏 565

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

golang 日志框架 seelog 使用:案例 (进阶)

golang 日志框架 seelog 使用:案例初文件目录配置文件seelog.xml代码SeelogHelp.gomain.go效果: 初 高性能日志框架:seelog,使用的好,可以提升很多开发效率,有时候做大型高并发的时候,我们需要用日志去检查很多问题,那么接下来介绍一个非常简单的小案例。 github : https://github.com/cihub/seelog 文件目录 配置文件 参考:https://www.cnblogs.com/hezhixiong/p/9844309.html 我改

二等碗 2088

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

seelog 日志滚动配置

go seelog日志滚动配置

顺心意 3657

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Golang seelog 使用入门简介

1 首先安装Seelog库 go get github.com/cihub/seelog 2 简单的日志输出 参考官方文档,些一个快速开始的 hello world 程序: package main import log "github.com/cihub/seelog" func main() { defer log.Flush() log.Inf

独一无二的小个性 5118

Obsidian i18n终极指南:3步让任何插件说中文

你是否曾因Obsidian插件全是英文界面而感到困惑?每次打开设置页面,面对满屏的专业术语,需要反复查词典才能理解功能含义?Obsidian i18n作为专为Obsidian设计的国际化插件,通过创新的可视化编辑器和AI翻译技术,让你无需编程知识也能轻松实现插件界面中文化。这个强大的工具能让你在5分钟内完成插件翻译,彻底告别语言障碍。 ## 🎯 为什么你需要Obsidian i18n? ##

gitblog_00027的博客 599

Go中的日志及第三方日志包logrus

有别的语言使用基础的同学工作中都会接触到日志的使用,Go中自然也有log相关的实现。Go log模块主要提供了3类接口,分别是 “Print 、Panic 、Fatal ”,对每一类接口其提供了三种调用方式,分别是 “Xxxx 、Xxxxln 、Xxxxf”,基本和fmt中的相关函数类似。 1. Go中的log包 1. 基本使用 log.Print:打印日志,和fmt包没什么区别,只是加上了上面...

rickiyang的博客 3810

Golang日志--Seelog的简单用法

Beego自带的log包虽然功能比较完善,但是在日志中会带上日志级别的时间戳,而且这个时间戳还删除不了。 因为项目需要,所以研究了下Golang中其他的日志包,发现seelog正好能满足俺们项目的需要,因此在这做简单介绍。 seelog的地址:"github.com/cihub/seelog" seelog功能强大,在此简单介绍将日志配置保存在xml文件中,并从文件中获取配置,然后使用的流程

stevefang的专栏 9700

gothub使用

https://blog.csdn.net/lonyw/article/details/75392410

flyDeDog的博客 1537

gocron mysql_[日常] gocron源码阅读-使用go mod管理依赖源码启动gocron

从 Go1.11 开始,golang 官方支持了新的依赖管理工具go modgo mod download: 下载依赖的 module 到本地 cachego mod edit: 编辑 go.modgo mod graph: 打印模块依赖图go mod init: 在当前目录下初始化 go.mod(就是会新建一个 go.mod 文件)go mod tidy: 整理依赖关系,会添加丢失的 modul...

weixin_30476025的博客 173

goland中"cannot find package "core" in any of"问题的解决方法

问题: 解决方法:file-&amp;gt;settings-&amp;gt;Go-&amp;gt;GOPATH-&amp;gt;PROJECT GOPATH中添加当前项目工程的路径

qiubingcsdn的博客 1万+

seelog学习笔记

之前用了beego内置的日志模块 beego框架-logs模块学习笔记 ,起初的时候用的还凑活,不过随着项目中日志量的增大,慢慢的发现beego内置的日志库已经完全不能满足日常需求。最后打算使用 seelog ,但是似乎从2017年以后seelog不再有人维护。以下就简单说一下使用seelog的过程。 一、seelog 1、功能 设置不同日志级别(trace, debug, info, warn...

知识就是生产力 3247

关于GO语言中提示 non-standard import 的解决办法

本人初学GO,基本上属于菜中之菜。今天因为要写个小工具需要用到SQLite,于是从SQLite官网下载了安装包安装上。开始一切顺利,但是在编译的时候提示我:non-standard import "github.com/mattn/go-sqlite3" in standard package "iislog"在网上找了半天也没有找到相关的内容,然后翻[和谐]墙用谷歌搜,找到一篇外国的解答。大概意...

ootw的专栏 7292

logrus包设置自定义日志格式

博文老窝:https://blog.csdn.net/HYZX_9987,欢迎访问。 logrus内置的日志格式只有两种: logrus.TextFormatter:纯文本 logrus.JSONFormatter:JSON 源码中有这个接口: // The Formatter interface is used to implement a custom Formatter. It...

空山新雨后,天气晚来秋 5332
上一篇: 商业公链之区块链技术使用的常见库(一)------Go语言命令行库"gopkg.in/urfave/cli.v1"
下一篇: 商业公链之区块链技术使用的常见库(三)------Go语言键值数据库 ”github.com/syndtr/goleveldb/leveldb”
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值