我正在使用log4net进行日志记录,我的转换模式在我的输出中包含threadId,但它只有最高的2位数,我被要求将其转换为十六进制,但到目前为止我发现代码C#将十进制数转换为十六进制但我怎样才能转换我的threadID为十六进制,并使其以十六进制格式显示.我对这个很新,甚至不确定在哪里看,有人帮忙吗?
这是xml文件中的代码
<conversionPattern value="%date [%thread] %method %-5level %logger – %message%newline"/>
Run Code Online (Sandbox Code Playgroud)
和[%thread]给我一个像10或7或8的数字,但我需要它是十六进制格式可能像0x887df9所以我该怎么办?
你可以写一个像这样的转换器:
public sealed class HexPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
long id;
if (long.TryParse(loggingEvent.ThreadName, out id))
{
writer.Write(id.ToString("X"));
}
else
{
writer.Write(loggingEvent.ThreadName);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你配置这样的布局:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%hex_thread] %message%newline" />
<converter>
<name value="hex_thread" />
<type value="YourNamespace.HexPatternConverter" />
</converter>
</layout>
Run Code Online (Sandbox Code Playgroud)
显然,您可以根据需要在模式中使用此转换器,并且还需要调整转换器,以便根据需要打印十六进制值.
| 归档时间: |
|
| 查看次数: |
4165 次 |
| 最近记录: |