【问题标题】:log4net Udp appender in mono on Ubuntu not loggingUbuntu上单声道的log4net Udp附加程序未记录
【发布时间】:2016-02-11 19:53:39
【问题描述】:

在 Minnow Max 上运行 Ubuntu,尝试在单声道应用程序中使用 log4net,Udp 附加程序不会登录到远程位置。在具有相同配置的 Raspberry Pi 2 上运行相同的应用程序,Udp 附加程序会正确记录。当我启用 log4net 日志记录时,没有错误,并且两台机器上的日志输出相同。我已经使用 nmap 和 Wire Shark 来验证 Udp 端口​​是否打开并正在发送数据包。 Minnow 上的文件附加程序正在正确记录。

C#代码

private static readonly ILog Logger = LogManager.GetLogger($"Drake.Mfg.DCS.{Environment.MachineName}");
public static LogLevel ConsoleLevel { get; set; }

public static void LogToNet(string message, LogLevel logLevel)
{
    try
    {
        switch (logLevel)
        {
            case LogLevel.None:
                break;
            case LogLevel.Trace:
                Logger.Trace(message);
                break;
            case LogLevel.Debug:
                Logger.Debug(message);
                break;
            case LogLevel.Info:
                Logger.Info(message);
                break;
            case LogLevel.Warn:
                Logger.Warn(message);
                break;
            case LogLevel.Error:
                Logger.Error(message);
                break;
            case LogLevel.Fatal:
                Logger.Fatal(message);
                break;
            case LogLevel.AlwaysLog:
                Logger.Info(message);
                break;
            default:
                throw new ArgumentOutOfRangeException(nameof(consoleLevel), consoleLevel, null);
        }
        Console.WriteLine($"{message}");
        Console.ResetColor();
    }

Log4Net.Config

<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <appender name="Main" type="log4net.Appender.RollingFileAppender">
    <file value="dcsLog.log" />
    <appendToFile value="true" />
    <maximumFileSize value="1GB" />
    <maxSizeRollBackups value="3" />
    <encoding value="utf-8" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%utcdate{ISO8601} %-8level %-28logger %message%newline" />
    </layout>
</appender>
  <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
    <remoteAddress value="192.168.10.53" />
    <remotePort value="7071" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j" />
    <encoding value="utf-8" />
  </appender>
  <root>
    <level value="Debug" />
    <appender-ref ref="Main" />
  </root>
  <logger name="Drake.Mfg.DCS.DEI80021">
    <level value="Debug" />
    <appender-ref ref="UdpAppender" />
  </logger>
</log4net>

单声道

Mono JIT 编译器版本 4.3.0 (master/844fc33 Tue Oct 20 14:21:50 EDT 2015) 版权所有 (C) 2002-2014 Novell, Inc、Xamarin Inc 和 贡献者。 www.mono-project.com TLS:__thread SIGSEGV:altstack 通知:epoll 架构:amd64 禁用:无 杂项:软调试 LLVM:支持,未启用。 GC:sgen

log4net

1.2.15

【问题讨论】:

  • 这个问题与 StackOverflow 定义的编程无关。在相关站点askubuntu.comServerFault.com(专业的服务器或网络相关的基础设施管理)上可能更合适。考虑使用 Q 底部的标志链接,并要求版主将其移到那里。请不要在 2 个不同的网站上发布相同的 Q。谢谢,祝你好运。
  • 如果您从网络数据包中确认数据已发送,那么它就变成了一个非编程问题。您必须检查网络以查看数据包丢失的位置。
  • 数据包是通过 nmap 而不是 log4net 发送的。 log4net 没有发送任何数据包

标签: c# linux ubuntu mono log4net


【解决方案1】:

Log4Net 配置与 xml 一样区分大小写。 Minnow 的主机名是小写的,我正在寻找大写。因为我无法单独控制主机名,所以我使用了 To Upper。

ILog logger = LogManager.GetLogger($"Drake.Mfg.DCS.{Environment.MachineName.ToUpper()}");

现在和将来都会修复它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多