gpt4 book ai didi

c# - 如何以编程方式获取 log4net 日志文件的名称模式?

转载 作者:太空狗 更新时间:2023-10-29 20:37:09 24 4
gpt4 key购买 nike

我正在尝试编写 C# 代码,它在运行时通过 log4net API 检索 log4net 日志文件的名称模式。

也就是说,如果在 log4net.config 中定义了以下附加程序:

<appender name="MyAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%date{yyyy}\%date{MM}\%date{dd}\%property{Id}.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="16" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>

我想在代码中的字符串变量中获取 %date{yyyy}\%date{MM}\%date{dd}\%property{Id}.log(不解析 < em>log4net.config 作为纯 XML)。

有没有人知道如何使用这个技巧?

提前谢谢你。

最佳答案

此模式的值将位于 FileAppender 实例的 File 属性中,该实例是您的日志存储库的一部分。

获取 appender 可以通过几种不同的方式完成。

  1. 如果您已经有一个 ILogger 实例(例如,您从 LogManager.GetLogger() 获得的实例),那么它有一个 Appenders 属性.这将为您提供与该特定级别的日志记录层次结构关联的任何附加程序。
  2. 您还可以调用 LogManager.GetRepository() 来获取包含整个记录器和附加器层次结构的 Heirarchy 对象。该方法需要一个程序集,因此传递 GetCallingAssembly()获取默认值。此类有一个 GetAppenders() 方法,该方法返回所有已配置的附加程序,但它不会告诉您哪些附加程序与哪些记录器关联。

从那里,只需查找正确类型的附加程序(例如 FileAppenderRollingFileAppender),然后读取它的 File 属性.

关于c# - 如何以编程方式获取 log4net 日志文件的名称模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12334888/

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