Log4net转换模式列表

时间:2009-07-09 05:47:23

标签: c# .net logging log4net

是否有可用于log4net的所有转换模式的完整列表,我甚至无法在源代码中找到它们。

我发现的只有this,不应该有更多的模式。例如,我如何获得托管应用程序的名称?

另一个问题是我如何添加自己的模式?

这里的例子就是可比较的列表,但适用于nlog

修改 我发现应用程序名称的模式为[Application],但我仍在寻找母版本。有人至少可以指向管理这些的源代码中的类。也许我可以从那里找到清单。

5 个答案:

答案 0 :(得分:11)

看起来这个链接已经死了。

我在Waybacktimemachine中找到它并将其发布到我的博客中。

http://spoiledtechie.com/post/2015/11/19/Conversion-Patterns-for-Log4Net.aspx

在SO上发帖可能太多了。如果我错了,如果每个人都认为这不是太糟糕,我会很乐意在这里发帖。

答案 1 :(得分:9)

就官方的模式列表而言,我认为你找到了它! :)

至于获取托管应用程序的名称,是不是 appdomain 转换模式名称?不知道为什么需要它,因为AppDomain.ToString()重载在 a 模式中返回应用程序友好名称...啊......挂起,ToString()还包括上下文策略,它们可能是在这种情况下额外的噪音。

至于添加自己的模式,Google在10秒时返回this link

答案 2 :(得分:8)

Apache Log4Net SDK文档中log4net.Layout.PatternLayout类的备注部分看起来符合我们的要求:

http://logging.apache.org/log4net/release/sdk/?topic=html/T_log4net_Layout_PatternLayout.htm

答案 3 :(得分:1)

在撰写本文时,log4net docs for conversion patterns 是有效的。如果,无论出于何种原因,log4net 消失了,那么 here is a link to the waybackmachine article for it

如果您不想浏览其他地方而只想查看完整列表(为什么不呢?),您可以在下面找到:

<头>
转换模式名称 效果
a 相当于appdomain
appdomain 用于输出产生日志事件的 AppDomain 的友好名称。
aspnet-cache 用于在 %aspnet-cache 的情况下输出所有缓存项,或者如果用作 %aspnet-cache{key},则仅输出一个命名项

此模式不适用于 Compact Framework 或 Client Profile程序集。
aspnet-context %aspnet-context 的情况下用于输出所有上下文项,如果用作 %aspnet-context{key},则仅输出一个命名项

此模式不适用于 Compact Framework 或 Client Profile程序集。
aspnet-request 用于在 %aspnet-request 的情况下输出所有请求参数,如果用作 %aspnet-request{key} 则仅输出一个命名参数

此模式不适用于 Compact Framework 或 Client Profile程序集。
aspnet-session %aspnet-session 的情况下用于输出所有会话项,如果用作 %aspnet-session{key},则仅输出一个命名项

此模式不适用于 Compact Framework 或 Client Profile程序集。
c 相当于logger
C 相当于type
class 相当于type
d 相当于date
date 用于输出本地时区的日志事件日期。要以通用时间输出日期,请使用 %utcdate 模式。日期转换说明符后面可以跟一个括在大括号之间的日期格式说明符。例如,%date{HH:mm:ss,fff}%date{dd MMM yyyy HH:mm:ss,fff}。如果没有给出日期格式说明符,则假定为 ISO8601 格式(Iso8601DateFormatter)。

日期格式说明符接受与 ToString 的时间模式字符串相同的语法。

对于更好的结果建议使用 log4net 日期格式化程序。这些可以使用字符串“ABSOLUTE”、“DATE”和“ISO8601”之一来指定,用于分别指定 AbsoluteTimeDateFormatter、DateTimeDateFormatter 和 Iso8601DateFormatter。例如,%date{ISO8601}%date{ABSOLUTE}

这些专用日期格式化程序的性能明显优于 ToString。
exception 用于输出随日志消息传入的异常。

如果异常对象存储在日志事件中,它将被渲染到带有尾随换行符的模式输出中。如果没有异常,则不会输出任何内容,也不会附加尾随换行符。通常在异常之前放置一个换行符并将异常作为模式中的最后一个数据。
F 相当于file
file 用于输出发出日志请求的文件名。

警告 生成调用者位置信息的速度极慢。除非执行速度不是问题,否则应避免使用它。

请参阅下面有关调用方位置信息可用性的说明。
identity 用于输出当前活动用户的用户名 (Principal.Identity.Name)。

警告 生成来电者信息非常慢。除非执行速度不是问题,否则应避免使用它。
l 相当于location
L 相当于line
location 用于输出生成日志事件的调用者的位置信息。

位置信息取决于 CLI 实现,但通常由调用方法的完全限定名称和调用者来源组成括号之间的文件名和行号。

位置信息非常有用。然而,它的生成极其缓慢。除非执行速度不是问题,否则应避免使用它。

请参阅下面有关调用方位置信息可用性的说明。
level 用于输出日志事件的级别。
line 用于输出发出日志记录请求的行号。

警告 生成调用者位置信息的速度极慢。除非执行速度不是问题,否则应避免使用它。

请参阅下面有关调用方位置信息可用性的说明。
logger 用于输出日志事件的记录器。记录器转换说明符后可以选择跟精度说明符,即括号中的十进制常量。

如果给出精度说明符,则只有记录器名称的最右边部分的相应数量打印。默认情况下,记录器名称是完整打印的。

例如,对于记录器名称“a.b.c”,模式 %logger{2} 将输出“b.c”。
m 相当于message
M 相当于method
message 用于输出应用程序提供的与日志事件相关的消息。
mdc MDC(ThreadContext.Properties 的旧名称)现在是组合事件属性的一部分。此模式受兼容性支持,但等同于属性。
method 用于输出发出日志请求的方法名称。

警告 生成调用者位置信息非常慢。除非执行速度不是问题,否则应避免使用它。

请参阅下面有关调用方位置信息可用性的说明。
n 相当于newline
newline 输出一个或多个平台相关的行分隔符。

这种转换模式提供的性能与使用“\n”或“\r\n”等不可移植的行分隔符字符串相同.因此,它是指定行分隔符的首选方式。
ndc 用于输出与生成日志事件的线程关联的 NDC(嵌套诊断上下文)。
p 相当于level
P 相当于property
properties 相当于property
property 用于输出特定于事件的属性。查找的键必须在大括号内指定并直接跟在模式说明符之后,例如%property{user} 将包含以字符串“user”为键的属性中的值。必须单独指定要包含在日志中的每个属性值。属性由记录器或附加器添加到事件中。默认情况下,log4net:HostName 属性设置为最初记录事件的机器的名称。

如果未指定键,例如%property 然后所有的键和它们的值都打印在一个逗号分隔的列表中。

一个事件的属性是从许多不同的上下文中组合起来的。下面按搜索顺序列出这些内容。

事件属性 事件具有可以设置的属性。这些属性仅特定于此事件。线程属性 在当前线程上设置的属性。这些属性由该线程上记录的所有事件共享。全局属性 全局设置的属性。这些属性由 AppDomain 中的所有线程共享。
r 相当于timestamp
stacktrace 用于输出日志事件的堆栈跟踪堆栈跟踪级别说明符可以用大括号括起来。例如,%stacktrace{level}。如果没有给出堆栈跟踪级别说明符,则假定为 1

输出使用格式:type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1

此模式不适用于紧凑型框架程序集。
stacktracedetail 用于输出日志事件的堆栈跟踪堆栈跟踪级别说明符可以用大括号括起来。例如,%stacktracedetail{level}。如果没有给出堆栈跟踪级别说明符,则假定为 1

输出使用格式:type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1 .MethodCall1(type param,...)

此模式不适用于 Compact Framework 程序集。
t 相当于thread
timestamp 用于输出从应用程序启动到创建日志事件所经过的毫秒数。
thread 用于输出生成日志事件的线程的名称。如果没有可用的名称,则使用线程号。
type 用于输出发出日志请求的调用者的完全限定类型名称。此转换说明符可以可选地后跟精度说明符,即括号中的十进制常量。

如果给出精度说明符,则将仅打印类名最右边部分的相应数量.默认情况下,类名以完全限定的形式输出。

例如,对于类名“log4net.Layout.PatternLayout”,模式%type{1}将输出“PatternLayout”。

警告 生成调用者类信息的速度很慢。因此,除非执行速度不是问题,否则应避免使用它。

请参阅下面有关调用方位置信息可用性的说明。
u 相当于identity
username 用于输出当前活动用户的 WindowsIdentity。

警告 生成调用者 WindowsIdentity 信息的速度极慢。除非执行速度不是问题,否则应避免使用它。
utcdate 用于以通用时间输出日志事件的日期。日期转换说明符后面可以跟一个括在大括号之间的日期格式说明符。例如,%utcdate{HH:mm:ss,fff}%utcdate{dd MMM yyyy HH:mm:ss,fff}。如果没有给出日期格式说明符,则假定为 ISO8601 格式(Iso8601DateFormatter)。

日期格式说明符接受与 ToString 的时间模式字符串相同的语法。

对于更好的结果建议使用 log4net 日期格式化程序。这些可以使用字符串“ABSOLUTE”、“DATE”和“ISO8601”之一来指定,用于分别指定 AbsoluteTimeDateFormatter、DateTimeDateFormatter 和 Iso8601DateFormatter。例如,%utcdate{ISO8601}%utcdate{ABSOLUTE}

这些专用日期格式化程序的性能明显优于 ToString。
w 相当于username
x 相当于ndc
X 相当于mdc
% 序列 %% 输出一个百分号。

答案 4 :(得分:0)

请参考以下链接。Log4netPatternLayout类

Link