log4net:配置忽略来自特定类的消息
有没有办法让 log4net 配置忽略特定的类?比如我们一般会在每个类中创建一个日志。与此类似:
private static readonly ILog Log = log4net.LogManager.GetLogger("MyClass");
问题是 MyClass
记录了大量数据,并且很难找到有关其他类的信息。它是另一个使用 MyClass 的开发人员,因此我不能直接进入并更改日志文件,但在我的环境中我想忽略这些。
我可以设置我的配置
文件来忽略来自特定类的消息吗?
Is there a way to have the log4net configuration ignore a specific class? For example, we generally create a log in every class. Similar to this:
private static readonly ILog Log = log4net.LogManager.GetLogger("MyClass");
The problem is MyClass
logs an extreme amount of data and it gets hard to find information about other classes. Its another dev that uses MyClass
so I cannot just go in and change around the log files, but in my environment I would like to ignore these.
Can I set my configuration
file to ignore the messages from a specific class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
当然,使用 过滤器。
这里是发布在博客上的代码片段,以供将来参考 - 全部归功于该博客文章的作者:
Sure, use a filter.
Here's the snippet posted on the blog, for future reference - all credit to the author of that blog post:
过滤器当然可以工作,但我更愿意像这样直接关闭记录器(或记录器层次结构):
假设
YourNameSpace.WithNoLogging
是一个命名空间,那么显示的配置将禁用整个命名空间上的日志记录。第二个“示例”关闭您的班级的日志记录(根据您的问题)。A filter certainly works but I would prefer to turn off the logger (or logger hierarchy) directly like this:
Assuming that
YourNameSpace.WithNoLogging
is a namespace then the shown configuration would disable logging on the entire name space. The second "example" turns off logging for your class (according to your question).我建议也使用 过滤器 。然而,由于我在尝试实现过滤器时很难找到整个情况,所以我发布了我创建的配置文件的示例片段,它指出了过滤器的去向。
在这种情况下,您要使用的过滤器是
提示:在Log4Net的< /代码> 标签。
config
文件中,放置标签的位置很重要,而且它们的优先级实际上很重要。因此,在本例中
标记位于
开始标记之后、在这种技术中,您可以拥有多个
appender
,您可以将特定记录器的日志记录结果重定向到单独的appender
,而不是忽略它们。例如,一个用于所有日志的appender
,一个用于特定class
的已过滤日志。I would suggest using Filters as well. However, since I struggled finding the whole picture when I was trying to implement the filter I am posting a sample snippet of the
Configutation file
I created which points out where filters go.The filter you are going for in this case would be
Hint: In the
config
file for Log4Net it is important where you put your tags and the priority of them actually matters. So in this case<filter>
tag comes after the<appender>
opening tag and before it's<file value = ... />
tag.In this technique you can have multiple
appenders
which you can redirect the logging results of a specific logger to a separateappender
instead of ignoring them. Such as oneappender
for all logs and one for the filtered out logs for a specificclass
.您可能想尝试将类别应用于您自己的消息
试试这个线程:
如何向 log4net 消息添加类别前缀?
You might want to try to apply a category to your own messages
Try this thread:
How to add category prefix to log4net message?
只是想发布如果您使用 NHibernate 和 log4net 时常见的排除情况。请注意,每个过滤器都需要自己的元素。
Just wanted to post the common exclusions if you are using NHibernate and log4net. Note that each filter needs its own element.