自升级到 8.2/8.1 后,Sitecore 自定义日志无法正常工作?
Sitecore custom logs not working since upgrade to 8.2/8.1?
在我的 web.config 中,我定义了一些自定义 log4net 错误记录器:
<configuration>
<log4net>
<appender name="RR.Db" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
<file value="$(dataFolder)/logs/RR.Db.{date}.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
</layout>
<encoding value="utf-8" />
</appender>
<logger name="RR.Db" additivity="false">
<level value="INFO"/>
<appender-ref ref="RR.Db"/>
</logger>
....
</log4net>
</configuration>
这些已经运行良好一段时间了。当我将 sitecore 从 8.0 升级到 8.1(以及随后的 8.2)时,我所有的记录器突然停止工作。发送到自定义日志的所有日志刚刚开始出现在默认 log.log 文件中,我的自定义日志 none 已创建。
为什么?我该如何解决这个问题?
我花了很长时间才弄清楚这一点,但事实证明 sitecore 已经改变了(像往常一样使用最少的信息)这些日志的注册方式。我发现 buried in the release notes this line:
<log4net>
section has been moved under <sitecore>
node and now
supports new support patching.
所以基本上他们已经移动到应该配置 log4net 部分的地方。它现在应该在 <sitecore>
配置下,而不是直接在 <configuration>
下,在每个其他使用 log4net 的应用程序中它是 previously/is。
我通过添加一个新的 .config 文件解决了这个问题,/App_config/Include/logging.xx.config
。在此文件中,我添加了来自 web.config 的配置并进行了一些调整:
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:x="http://www.sitecore.net/xmlconfig/">
<sitecore>
<log4net>
<appender name="RR.Db" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
<file value="$(dataFolder)/logs/RR.Db.{date}.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
</layout>
<encoding value="utf-8" />
</appender>
<logger name="RR.Db" additivity="false">
<level value="INFO"/>
<appender-ref ref="RR.Db"/>
</logger>
....
</log4net>
</sitecore>
</configuration>
您还应该删除 web.config 中这些日志的配置,上面现在不在根目录中。现在一切都按预期工作。
在我的 web.config 中,我定义了一些自定义 log4net 错误记录器:
<configuration>
<log4net>
<appender name="RR.Db" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
<file value="$(dataFolder)/logs/RR.Db.{date}.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
</layout>
<encoding value="utf-8" />
</appender>
<logger name="RR.Db" additivity="false">
<level value="INFO"/>
<appender-ref ref="RR.Db"/>
</logger>
....
</log4net>
</configuration>
这些已经运行良好一段时间了。当我将 sitecore 从 8.0 升级到 8.1(以及随后的 8.2)时,我所有的记录器突然停止工作。发送到自定义日志的所有日志刚刚开始出现在默认 log.log 文件中,我的自定义日志 none 已创建。
为什么?我该如何解决这个问题?
我花了很长时间才弄清楚这一点,但事实证明 sitecore 已经改变了(像往常一样使用最少的信息)这些日志的注册方式。我发现 buried in the release notes this line:
<log4net>
section has been moved under<sitecore>
node and now supports new support patching.
所以基本上他们已经移动到应该配置 log4net 部分的地方。它现在应该在 <sitecore>
配置下,而不是直接在 <configuration>
下,在每个其他使用 log4net 的应用程序中它是 previously/is。
我通过添加一个新的 .config 文件解决了这个问题,/App_config/Include/logging.xx.config
。在此文件中,我添加了来自 web.config 的配置并进行了一些调整:
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:x="http://www.sitecore.net/xmlconfig/">
<sitecore>
<log4net>
<appender name="RR.Db" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
<file value="$(dataFolder)/logs/RR.Db.{date}.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
</layout>
<encoding value="utf-8" />
</appender>
<logger name="RR.Db" additivity="false">
<level value="INFO"/>
<appender-ref ref="RR.Db"/>
</logger>
....
</log4net>
</sitecore>
</configuration>
您还应该删除 web.config 中这些日志的配置,上面现在不在根目录中。现在一切都按预期工作。