Log4net转换模式列表

kay*_*one 31 .net c# logging log4net

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

我发现的就是这个,不应该有更多的模式.例如,我如何获得托管应用程序的名称?

另一个问题是我如何添加自己的图案?

这里的例子就是可比的列表,但对于nlog

编辑: 我找到了应用程序名称的模式,[Application]但我仍在寻找母亲负载.有人至少可以指向管理这些的源代码中的类.也许我可以从那里找到清单.

Spo*_*com 11

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

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

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

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


Dan*_*son 11

在撰写本文时,转换模式的 log4net 文档是有效的。如果出于某种原因,log4net 消失了,那么这里有一个指向它的 waybackmachine 文章的链接

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

转换模式名称 影响
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 用于输出日志事件的记录器。记录器转换说明符可以选择后跟精度说明符,它是括号中的十进制常量。

如果给出了精度说明符,则仅打印记录器名称最右侧组件的相应数量。默认情况下,记录器名称会被完整打印。

例如,对于记录器名称“abc”,模式%logger{2}将输出“bc”。
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

此模式不适用于 Compact Framework 程序集。
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
% 该序列%%输出一个百分号。


si6*_*618 9

至于正式的模式列表,我想你找到了它!:)

至于获取托管应用程序的名称,是不是appdomain转换模式名称?不知道为什么它需要为AppDomain.ToString()过载回报应用友好的名称一个模式...啊... ...死守,toString()方法还包括上下文政策,他们很可能是在这种情况下额外的噪音.

至于添加自己的模式,Google在10秒内返回此链接.


Rae*_*Rae 9

Apache Log4Net SDK文档中该类的" 备注"部分log4net.Layout.PatternLayout看起来具有我们想要的内容:

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

  • 不应该做这样的链接。他们死了 (4认同)