gpt4 book ai didi

log4net - 使用自定义主题配置或扩展 log4net SmtpAppender

转载 作者:行者123 更新时间:2023-12-02 07:02:53 26 4
gpt4 key购买 nike

如何为生成的电子邮件主题指定布局和转换模式?

BufferSize 需要小于或等于 1,这样就不会发生缓冲。

最佳答案

CodeProject 文章 log4net NonBufferedSmtpAppenderWithSubjectLayout看起来很有希望。

<小时/>

通过继承所需的基本附加程序(在我的例子中为 SmtpPickupDirAppender)并添加 ILayout 属性,可以更改 Append 方法中的主题。

public class SmtpSubjectLayoutPickupDirAppender : log4net.Appender.SmtpPickupDirAppender
{
public SmtpSubjectLayoutPickupDirAppender()
: base()
{

}

public ILayout SubjectLayout
{
get;
set;
}

protected override void Append(log4net.Core.LoggingEvent loggingEvent)
{
if (this.BufferSize <= 1 && this.SubjectLayout != null)
{
StringWriter subjectWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
this.SubjectLayout.Format(subjectWriter, loggingEvent);
this.Subject = subjectWriter.ToString();
}

base.Append(loggingEvent);
}
}

然后可以通过指定 subjectLayout 属性来配置它以覆盖默认主题。

<appender name="SmtpPickupDirAppender" type="namespace.for.SmtpSubjectLayoutPickupDirAppender">
<to value="to@domain.com" />
<from value="from@domain.com" />
<subject value="test logging message" />

<subjectLayout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="Logging message - %message"/>
</subjectLayout>

<pickupDir value="C:\SmtpPickup" />
<bufferSize value="1" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>

关于log4net - 使用自定义主题配置或扩展 log4net SmtpAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com