log4net:在数据库中将两条消息记录在一行中?
我正在尝试将特定方法的输入和输出记录到数据库中。 我想将这些信息放在单独的列中。 我研究了 PatternLayout,它似乎只满足单个 %message 参数,这意味着如果您这样做:
log.Debug("This is a message");
那么 log4net 会将“这是一条消息”视为要记录的消息。 我想做一些类似的事情:
log.Debug(request, response);
使用 log4net 可以吗? 请记住,我的目标是在单独的列中包含“请求”和“响应”。
I'm trying to log the input and output of a particular method to the database. I'd like to have this information in separate columns. I've investigated the PatternLayout and it seems that it only caters for a single %message parameter, meaning that if you do:
log.Debug("This is a message");
then log4net sees "This is a message" as the message to be logged. I want to do something like:
log.Debug(request, response);
Is this possible using log4net? Keep in mind that my goal is to have "request" and "response" in separate columns.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的 PatternConverter 方法是朝着正确方向迈出的一步,尽管使用静态输入和输出属性使其变得有点不稳定(线程安全方面)。
这里的技巧是要意识到 logger.Debug(...) 上的消息参数是对象,并且您可以传入任何您喜欢的内容。
您可以定义自定义消息类型
,然后让您的转换器读取任一属性,
然后日志记录变得更加清晰,
您的配置将是相同的。
不过,一个技巧是子类化 PatternLayout 并在该类的构造函数中添加转换器。 这样你也可以削减你的配置。 这不会导致您丢失 %message 令牌,除了 PatternLayout 支持的所有令牌之外,您的 %input 和 %output 令牌也会出现。 因此,您实际上可以拥有这样的模式:
这是自定义模式布局的快速实现:
Your PatternConverter way is a step in the right direction, though the use of the static Input and Output properties makes it all a bit shaky (thread-safety wise).
The trick here is to realize that the message parameter on logger.Debug(...) is object and that you can pass in whatever you like.
You could define a custom message type
and then let your converters read either property
the logging then becomes much cleaner
your config would be the same.
A tip though is to subclass the PatternLayout and add the converters in the constructor of that class. That way you can also trim down your config. This will not cause you to loose the %message token, your %input and %output tokens will come in addition to all the tokens that PatternLayout supports. So you could actually have a pattern like this:
Here's a quick implementation of a custom pattern layout:
我想出了一种使用自定义 PatternConverters
Appender 规范来执行此操作的方法:
使用以下方式调用它:
I've come up with one way to do this using custom PatternConverters
Appender Specification:
Call it using: