通过log4net记录到运行时提供的TextWriter

Joe*_*ell 9 c# log4net message-queue azure

我有一个消息处理程序,在Azure中运行以下签名:

public static void DispatchQueueMessage([QueueTrigger("bq")] string msg,
                                                             TextWriter tw)
Run Code Online (Sandbox Code Playgroud)

我想配置log4net以使用提供的TextWriter.

如果这一般不可能,我绝对会选择使用标准格式输出的单个ILog实例!


我最终做了(如下):

ILog log = LogManager.GetLogger(name);

var appender = new TextWriterAppender();  

appender.Writer = tw;
appender.Threshold = log4net.Core.Level.Debug;

DynamicPatternLayout layout = new DynamicPatternLayout();
layout.ConversionPattern = "%d [%t] %-5p %m%n";
layout.ActivateOptions();

appender.Layout = layout; 
appender.ActivateOptions();

((log4net.Repository.Hierarchy.Logger) log.Logger).AddAppender(appender);
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Configured = true;
return log;
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?