gpt4 book ai didi

c# - 如何使用 Log4Net 将数据发送到 MSMQ 队列?

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:34 27 4
gpt4 key购买 nike

我正在尝试使用 Log4Net 向 MSMQ 队列发送消息。我花了很多时间从网上了解该功能。但我找不到太多帮助。以下是我的源代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using log4net.Config;

namespace MQTest
{
class Program
{
private static readonly ILog ilogger = LogManager.GetLogger("");
static void Main(string[] args)
{
ilogger.Debug("This should go to the queue");
ilogger.Fatal("This should go to the queue");
}
}
}

应用程序配置

<log4net>
<appender name="MsmqAppender" type="MQTest.Appender.MsmqAppender, MQTest">
<queueName value="private$\test_queue"/>
<labelLayout value="LOG [%level] %date"/>
<layout type="log4net.Layout.XmlLayoutSchemaLog4j"/>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="MsmqAppender" />
</root>
</log4net>

当我调试代码时,我注意到 IsDebugEnabled = false、IsFatalEnabled =false 等。 我不知道如何在使用 MsmqAppender 时填充上述标志。

谢谢你的帮助

最佳答案

你没有正确设置它。

您已经定义了 appender 并将其注册到配置文件中,因此当您想要记录某些内容时,只需使用 ILog您从日志管理器获得的记录器,您不需要创建 logMSMQ 的实例:

myLogger.Debug("This should go to the queue");

查看 appender 和配置,有几件事很突出:

  1. 你不应该调用 XmlConfigurator.Configure();从 appender 中

  2. 您没有在配置中正确注册 appender:您需要 specify it by type and assembly namespace ,例如:<appender name="MsmqAppender" type="AssemblyNamespace.MSMQTest.LogMSMQ, AssemblyNamespace">

  3. 您没有在根记录器配置中按名称指定它:

<root>
<level value="ALL" />
<appender-ref ref="MsmqAppender" />
</root>

在设置过程中,打开 log4net internal debugging因为它将帮助您了解正在发生的事情。

关于c# - 如何使用 Log4Net 将数据发送到 MSMQ 队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953996/

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