在了解AOP时,我试图运用每个人最好的例子:日志记录。 我的设置是一个asp.net mvc4 Web项目和一个单独的日志记录项目,其中定义了日志记录。
我已经设法让日志记录继续进行,但由于某些原因我无法获得它只记录信息。
这是我的配置文件(Log4Net.config,Logging project)
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="DEBUG_APPENDER" type="log4net.Appender.RollingFileAppender">
<file value="..\Logs\application.log" />
<additivity value="true" />
<appendToFile value="true" />
<maxSizeRollBackups value="1" />
<maximumFileSize value="500KB" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="DEBUG_APPENDER"/>
</root>
</log4net>
具有日志代码的类:
[Serializable]
public class LogAttribute:OnMethodBoundaryAspect
{
private static ILog _logger;
private static void CreateLogger(MethodExecutionArgs args)
{
_logger = LogManager.GetLogger(typeof(LogAttribute));
}
public override void OnEntry(MethodExecutionArgs args)
{
CreateLogger(args);
_logger.Info("info test");
_logger.Error("Error test, hopefully");
_logger.Fatal("Fatal please ");
}
}
网络项目的用法:
public class HomeController : Controller
{
[Log]
public ActionResult Index()
{
return View();
}
}
视图只是页面上的Hello字符串。
我的日志文件,不管我只给了我
2016-04-05 19:12:39,241 [124] INFO Logging.LogAttribute [(null)] - info test
答案 0 :(得分:0)
如果要在每条消息后查看内容,则需要添加immediateFlush
,以便在每次调用后将内容写回磁盘。默认情况下这是错误的原因是因为它将性能提高到不能每次调用都写入。
有关详细信息,请参阅this documentation。
属性值
默认行为是在每个追加操作结束时刷新。 如果此选项设置为false,则基础流可以将日志记录事件延迟到以后的时间。
说明
在每次附加结束时避免刷新操作会导致性能提升10%到20%。但是,在跳过冲洗方面存在安全权衡。实际上,当跳过刷新时,很可能在应用程序退出时,最后几个日志事件将不会记录在磁盘上。即使性能提升20%,这也是一个很高的代价。
<appender name="DEBUG_APPENDER" type="log4net.Appender.RollingFileAppender">
<immediateFlush value="true" />
<file value="..\Logs\application.log" />
<additivity value="true" />
<appendToFile value="true" />
<maxSizeRollBackups value="1" />
<maximumFileSize value="500KB" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>