【问题标题】:log4net: Could not load type 'log4net.Appender.AdoNetAppender'log4net:无法加载类型“log4net.Appender.AdoNetAppender”
【发布时间】:2017-06-18 10:46:53
【问题描述】:

我的 ASP.NET Core 应用程序 (netcoreapp1.1) 中 log4net 的 AdoNetAppender 有问题。

如果我想使用 AdoNetAppender,我会收到以下错误:

System.TypeLoadException:无法从程序集“log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a”加载类型“log4net.Appender.AdoNetAppender”。

是否有人在 ASP.NET Core (netcoreapp1.1) 下运行 AdoNetAppender?如果没有,是否有一个很好的替代方法可以使用 log4net 登录到数据库?我也使用 Entity Framework Core。

【问题讨论】:

    标签: c# asp.net-core log4net


    【解决方案1】:

    .NET Core 1.0 / .NET Standard 1.3 目前不支持AdoNetAppenderhttps://logging.apache.org/log4net/release/framework-support.html#Appenders

    【讨论】:

    • 正是我所担心的。是否有登录数据库的替代方法?
    • 嗨!你找到登录数据库的方法了吗?
    【解决方案2】:

    对于 .Net Core,您可以使用 nuget.org/packages/MicroKnights.Log4NetAdoNetAppender 。与 AdoNetAppender 相比,它的设置有些不同,但也非常简单,可以在这里找到如何设置:github.com/microknights/Log4NetAdoNetAppender

    这是一个适合我的例子

    <appender name="AdoNetAppender" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
            <bufferSize value="1" />
            <connectionType value="System.Data.SqlClient.SqlConnection,System.Data.SqlClient,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" />
            <connectionStringName value="log4net" />
            <connectionStringFile value="appsettings.json" />
            <commandText value="INSERT INTO Log ....." />
            <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
            <parameterName value="@thread" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%thread" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@log_level" />
            <dbType value="String" />
            <size value="50" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%level" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@logger" />
            <dbType value="String" />
            <size value="255" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%logger" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@message" />
            <dbType value="String" />
            <size value="4000" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%message" />
            </layout>
        </parameter>
        <parameter>
            <parameterName value="@exception" />
            <dbType value="String" />
            <size value="2000" />
            <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
      </appender>
    

    在你的 appsettings.json 中

    "ConnectionStrings": {
    "log4net": "Data Source=.\\SQLEXPRESS;Initial Catalog=LogDB;User ID=user;Password=pass",
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2012-08-14
      • 2015-08-28
      • 2016-03-05
      • 2014-08-09
      • 2015-04-16
      • 2010-09-08
      相关资源
      最近更新 更多