我正在尝试配置我的C#项目以使用log4net for RavenDB。我已经有log4net使用FileAppender,但RavenAppender现在似乎没有工作。以下是我到目前为止所采取的步骤:
我使用以下NuGet Package Manager控制台指令安装了log4net.Raven库(取自上面链接的包网站):
Install-Package log4net.Raven
该命令将log4net.Raven库添加到我的项目引用中。
在我的Web.config文件中,我有以下设置,其中大部分都是从log4net.Raven project on GitHub的README文件中复制和粘贴的(log4net.Raven的所有者也有类似的configuration settings published on his blog) :
<!-- Example connection string config from blog -->
<configsections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net">
</configsections>
<connectionstrings>
<add connectionstring="Url=http://raven; DefaultDatabase=Log" name="RavenLogs">
<add connectionstring="Url=http://localhost:8080;user=asa;password=asa" name="SecureRaven">
</add>
</add>
</connectionstrings>
<!-- My current config -->
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<connectionStrings>
<add name="RavenDB" connectionString="Url=http://localhost:8080;Database=MyDatabase" />
</connectionStrings>
<!-- Example log4net config from README.
My project uses these settings except for the connectionString value,
which is set to "RavenDB" to match the setting name above.
-->
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!-- LogFileAppender settings here -->
</appender>
<appender name="RavenAppender" type="log4net.Raven.RavenAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
<connectionString value="RavenDB"/>
<maxNumberOfRequestsPerSession value="100"/>
<bufferSize value="50" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender" />
<appender-ref ref="RavenAppender" />
</root>
</log4net>
在我的C#代码中,我有以下内容:
public class FooController : Controller
{
private static ILog _log = LogManager.GetLogger(typeof(FooController));
public ActionResult Index()
{
_log.Info("Hello World!");
return View("Index");
}
}
该代码将写入我工作站上的日志文件,因此我知道log4net通常正常工作。但是对于RavenDB,我一直在Web浏览器中通过Raven工作室检查MyDatabase的文档和日志,我没有看到任何带有“Hello World”消息的Info级别日志。
有没有人对问题可能是什么以及如何解决它有任何想法?
答案 0 :(得分:1)
可能问题在于:
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
如果项目中没有名为FileAppender的类,则需要在FileAppender中添加库名,例如:
<appender name="LogFileAppender"
type="log4net.Appender.FileAppender, log4net.Raven">
(类型的语法是=" Fully qualified class name , assembly file name , version , culture , public key token "
)
答案 1 :(得分:0)
尝试调试log4net,如Log4Net Troubleshooting 如果你找到这一行:
log4net: Adding appender named [RavenAppender] to logger [root].
RavenAppender正在运作