记录log4net使用的conversionPattern值的首选方法是什么?

时间:2010-05-26 13:34:35

标签: log4net

我的问题似乎有点奇怪 - 我希望记录 conversionPattern ,用于格式化使用某些appender时使用log4net记录的消息。

例如,如果我的log4net部分如下所示:

<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <appender name="MainAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <file type="log4net.Util.PatternString" value="${NCLOGS}\NC.Entities.Test${CI_TAG}.%processid.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <MaximumFileSize value="10MB" />
      <StaticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="MainAppender" />
    </root>
</log4net>

然后我想在日志文件中看到%date [%thread]%-5level%logger - %message%newline

基本原理我正在使用Log4View查看我们的日志,它需要转换模式才能格式化消息。如果在日志本身中找到转换模式,我觉得很方便,这使我无需查找相应的配置文件并从那里复制它。

现在我正在使用一些XPATH魔法,但我想知道是否有更好的解决方案,可能使用了一些log4net API。

感谢。

1 个答案:

答案 0 :(得分:0)

一种方法是在启动应用程序时将模式添加为属性。您可以从配置文件中读取模式,或者可能有一种方法以编程方式获取每个appender的模式,在这种情况下,您可以为每个appender添加一个属性,然后让每个appender的每个模式记录该属性。 / p>

添加属性的类似内容:

log4net.GlobalContext.Properties["PatternForAppender"]= getLoggerPattern();

这样的东西将它包含在日志中:

<conversionPattern value="%logger (%property{PatternForAppender}) [%level] - %message%newline" />