首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4net 2.0.8 nuget中缺少SmtpAppender?

log4net 2.0.8 nuget中缺少SmtpAppender?
EN

Stack Overflow用户
提问于 2017-10-21 18:33:18
回答 1查看 1.1K关注 0票数 5

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

我想使用SmtpAppender,但库中不存在

这是我的log4net配置

代码语言:javascript
复制
<?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

代码语言:javascript
复制
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");
        }

    }
}

当我运行应用程序时,我希望向本地主机发送一封带有消息"TEST INFO LOG“的电子邮件,但log4net却将以下内容输出到控制台:

代码语言:javascript
复制
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个月了,下载了数百万次。

EN

回答 1

Stack Overflow用户

发布于 2019-06-29 05:56:35

由于内置了SMTP is not supported for .Net Core,您可以很容易地为Log4Net创建自己的自定义SmtpAppender附加器。看一看

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

作为如何构建一个非常基本的SMTP附加器的示例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46862350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档