关于serilog中CompactJsonFormatter的固定格式的修改

在使用serilog过程中遇到点问题,记录一下

 

问题:在使用serilog过程中,想用CompactJsonFormatter固定生成的那个json格式的日志,但是这个格式中的@t是一个固定的UTC时间戳,对于有日志查看器的倒没什么,但是有的保密性和规模很小的小项目来说,没什么必要还得上日志查看器,都是直接打开日志查看的,有点不灵活,而我想把固定的UTC时间戳改成系统时间,这样既能方便实用日志查看器,直接打开日志也能看明白时间,对于小项目来说也无所谓多那几个字节的空间和性能。

 

解决方案:官方有点性能强迫症,不提供官方的更改格式配置,只能下源码更改,重新编译,替换相应的dll文件来实现

 

 

1、下载Compact源码:GitHub - serilog/serilog-formatting-compact:Serilog 的 Compact JSON 事件格式

 

2、下载后会提示4.5.2和sdk不兼容

        (1)、针对4.5.2不兼容错误:在安装 .NET Framework 开发人员包或可再发行组件 - .NET Framework | Microsoft Docs这里下载4.5.2对应的开发人员工具包安装即可解决。

             

 

 

            (2)、针对sdk不兼容的情况:打开cmd控制台,使用dotnet --info命令查看自己的sdk版本,打开项目所在文件夹中的global.json文件,此文件没有被包含到项目中,需要打开物理文件夹就能看到。。。。我找了好长时间。。。。

                         然后修改里面的verson版本为你刚才查到的版本,即可解决。

 

 

3、然后更改源码中的此文件serilog-formatting-compact-dev\serilog-formatting-compact-dev\src\Serilog.Formatting.Compact\Formatting\Compact\CompactJsonFormatter.cs,这里可以看看其他的代码,进行自己想要的格式自定义化,这里我只改了时间。

 

 

 4、重新生成解决方案后,在   serilog-formatting-compact-dev\serilog-formatting-compact-dev\src\Serilog.Formatting.Compact\bin\Debug\netstandard2.0    这里找到新生成的Serilog.Formatting.Compact.dll文件,复制出来,覆盖到自己项目中的bin目录下,再启动项目即可。

 

5、在VS调试环境中,如果是通过nuget安装的serilog,替换后不要对项目进行重新生成,只要重新生成,项目就会回到默认的官方版本,请注意

 

6、感觉自己搞得这些东西没什么必要,原时间是格林威治时间,加8就可以了。。。。。

 

7、serilog的通过配置文件配置日志这种方法就有问题,有点坑爹,太复杂了,分类,过滤按他的示例来弄都不好使,放弃了,还是用回nlog吧,nlog4.5版本以后也有结构化日志

posted @ 2022-03-21 21:42  混子程序员ZMY  阅读(378)  评论(0编辑  收藏  举报