log4net中提供了一些常用的pattern string,如:%m为输出日志信息,%n为输出一新行。
但有时我们也需要记录一些其它的常用信息,如用户的id、ip、浏览器信息、agent等,这个时候便可以通过继承log4net原生的PatternLayout来实现一些自定义的扩展。
以浏览器信息为例,以下我们扩展一个记录浏览器信息的PatternConverter:
- 新建一个HttpRequestPatternConverter,继承自log4net的PatternLayoutConverter,作为我们将pattern string转换为http请求相关信息的基类
public abstract class HttpRequestPatternConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
try
{
if (HttpContext.Current.Session != null)
{
HttpConvert(writer, loggingEvent, HttpContext.Current);
}
else
{
writer.Write("-");