以下是该情景:
我有一些'消息' (数据)必须并行处理
在这些并行进程中,我想在消息特定的日志文件中记录一些内容
我尝试过很多东西,但我的日志搞砸了。
我已经写了一个小测试项目..让我们看看代码:
using System.Collections.Generic;
using System.Threading.Tasks;
namespace ParallelTest
{
public class MessageController
{
public void InitiateProcesses(List<Message> messagesToProces)
{
MessageProcessor messageProcessor = new MessageProcessor();
Parallel.ForEach(messagesToProces, messageProcessor.ProcessMessage);
}
}
}
MessageProcessor如下所示:
using log4net;
namespace ParallelTest
{
public class MessageProcessor
{
public void ProcessMessage(Message message)
{
log4net.ThreadContext.Properties["LogName"] = message.MessageId;
ILog log = LogManager.GetLogger("CsvLogger");
log4net.Config.XmlConfigurator.Configure();
log.Info(string.Format("{0} - {1}", message.MessageId, message.Body));
}
}
}
所以我使用log4net,这是配置:
<log4net>
<appender name="CsvAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="c:\Temp\log_%property{LogName}.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date,%message%newline" />
</layout>
</appender>
<logger additivity="false" name="CsvLogger">
<level value="ALL"/>
<appender-ref ref="CsvAppender" />
</logger>
</log4net>
创建了日志文件,但是..
我可以在这里使用一些帮助:)