在log4net 2.0.8 nuget中缺少SmtpAppender?

时间:2017-10-21 10:33:18

标签: c# .net-core log4net .net-core-2.0

我为.NET Core 2.0创建了一个控制台应用程序并安装了一个log4net 2.0.8 nuget

我想使用SmtpAppender,但它不存在于库

这是我的log4net配置

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
   <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="test@test.com" />
    <from value="test@test.com" />
    <subject type="log4net.Util.PatternString" value="Message logged" />
    <smtpHost value="localhost" />
    <authentication value="None" />
    <port value="25" />
    <bufferSize value="1" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%utcdate [%level] - %message%newline%exception" />
    </layout>
  </appender>
  <root>
    <level value="All" />
    <appender-ref ref="SmtpAppender" />
  </root>
</log4net>

这是Program.cs

namespace Log4NetTest
{
    public class Program
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));

        static void Main(string[] args)
        {
            XmlDocument log4netConfig = new XmlDocument();
            log4netConfig.Load(File.OpenRead("log4net.config"));

            var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(), 
                typeof(log4net.Repository.Hierarchy.Hierarchy));

            log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
            log.Info("TEST INFO LOG");
        }

    }
}

当我运行应用程序时,我希望将一封电子邮件发送到localhost,并显示消息&#34; TEST INFO LOG&#34;但是log4net将其输出到控制台:

log4net:ERROR Could not create Appender [SmtpAppender] of type [log4net.Appender.SmtpAppender]. Reported error follows.
System.TypeLoadException: Could not load type 'log4net.Appender.SmtpAppender' from assembly 'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'.
   at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type, ObjectHandleOnStack keepAlive)
   at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [SmtpAppender] not found.
Press any key to continue . . .

SmtpAppender类型甚至没有出现在对象浏览器中。有SmtpPickupDirAppender,但这不是我想要使用的。

我错过了什么吗?经过一番搜索,我发现没有人遇到过这个问题,log4net 2.0.8已经有7个月了,下载了数百万次。

1 个答案:

答案 0 :(得分:0)

由于内置了SmtpAppender is not supported for .Net Core,因此您可以轻松地为Log4Net创建自己的自定义SMTP附加程序。看看

https://github.com/HatfieldConsultants/Log4Net.Core.CustomAppenders

作为如何构建非常基本的SMTP附加程序的示例。

相关问题