gpt4 book ai didi

c# - 将程序开始时间附加到每个日志行

转载 作者:行者123 更新时间:2023-11-30 19:23:22 32 4
gpt4 key购买 nike

我有一个 C# 程序,使用 log4net 库进行日志记录。

我试图在整个程序的每一行日志中记录程序启动时间:

class MyProgram
{
static DateTime startTime;
static void Main()
{
startTime = DateTime.Now;
Log.Info(startTime + "Program started");

MyMethod1();
//...
}

static void MyMethod1()
{
Log.Info(startTime + "method1 step1 ");
//code
Log.Info(startTime + "method1 step2");
}
}

log4net配置

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Logs\\Job.json" />

<appendToFile value="true" />
<rollingStyle value="Size" />
<maximumFileSize value="20MB" />
<maxSizeRollBackups value="10" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
<decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
<member value="startTime:%property{ApplicationStartTime}"/>
<member value="date:date" />
<member value="level:level" />
<member value="logger:logger" />
<member value="message:messageObject" />
<member value="exception:exception" />
</layout>
</appender>

我可以配置 log4net 自动将程序的开始时间添加到每一行日志,而不是手动将其附加到每一行吗?

最佳答案

您可以使用 log4net.GlobalContext 设置全局属性。像这样:

   static void Main()
{
log4net.GlobalContext.Properties["ApplicationStartTime"] = DateTime.Now;
(...)

然后在你的日志配置中这样访问它

%property{ApplicationStartTime}

Here更多阅读,here是一个类似的问题。

对于log4net.Ext.Json,可以这样引用自定义属性:

<!-- json property named after custom property -->
<member value="ApplicationStartTime"/>
<!-- json property with explicit name -->
<member value="startTime:ApplicationStartTime"/>

关于c# - 将程序开始时间附加到每个日志行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50159086/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com