在Visual Studio 2010中为RavenDB配置/安装log4net

时间:2011-12-27 19:52:57

标签: c# .net logging log4net ravendb

我正在尝试配置我的C#项目以使用log4net for RavenDB。我已经有log4net使用FileAppender,但RavenAppender现在似乎没有工作。以下是我到目前为止所采取的步骤:

步骤1:安装log4net.Raven

我使用以下NuGet Package Manager控制台指令安装了log4net.Raven库(取自上面链接的包网站):

Install-Package log4net.Raven

该命令将log4net.Raven库添加到我的项目引用中。

第2步:配置Web.config

在我的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>

步骤3:从C#代码

记录

在我的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级别日志。

有没有人对问题可能是什么以及如何解决它有任何想法?

2 个答案:

答案 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正在运作