2

先行ゼロがログに表示されないように日付形式を指定する方法を知っている人はいますか?非常にうるさいように聞こえますが、別のプロセスがログを読み取っていて、先行ゼロが気に入らないようです。

使ってます:

<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
    <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="NamespaceName.ClassName" />
    </filter>     
    <filter type="log4net.Filter.DenyAllFilter" />   
    <param name="RemoteAddress" value="192.168.1.123" />
    <param name="RemotePort" value="514" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{MM/dd/yyyy hh:mm:ss tt} %message %newline" />
    </layout>
</appender>

そして私はこれを手に入れます:

2012年7月10日09:20:39AM..。

可能であれば、次の情報を入手したいと思います。

2012年7月10日9:20:39AM

%date {M / dd / yyyy h:mm:ss tt}を使用してみましたが、機能しませんでした(2文字が必要な場合も奇妙に思えます)

2012年7月15日に編集:

私はまだオフィスに戻っていないので、UDPのバグをまだチェックしていませんが、他の誰かが単にアプリに渡すプロパティを追加するためにアペンダーを拡張したい場合は、次のようにします。

public class SyslogAppender : UdpAppender
{
    public string UpdateIp { get; set; }

    // ReSharper disable RedundantOverridenMember
    override protected void Append(LoggingEvent loggingEvent)
    {
        base.Append(loggingEvent);

    }
    // ReSharper restore RedundantOverridenMember

}

<appender name="UdpAppender" type="Namespace.Log4Net.SyslogAppender">
    <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="Namespace.LogGenFileReparser" />
    </filter>  
    <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="Namespace.Log4Net.SyslogAppender" />
    </filter>       
    <filter type="log4net.Filter.DenyAllFilter" />   
    <param name="RemoteAddress" value="192.168.73.133" />
    <param name="RemotePort" value="514" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{M/dd/yyyy h:mm:ss tt} %message %newline" />
    </layout>
    <param name="UpdateIp" value="false" />
</appender>

configureを呼び出す前に、新しいパラメーターを確認します。

        var log4FileConfigFile = XDocument.Parse(File.ReadAllText("log4net.config"));
        var firstOrDefault = log4FileConfigFile.Descendants("log4net").Descendants("appender").
            Select(appender => appender.Attributes().
                FirstOrDefault(attrib => attrib.Name == "name" && attrib.Value == "UdpAppender")).
                    FirstOrDefault(check => null != check);

        if (firstOrDefault != null)
            if (firstOrDefault.Document != null)
            {
                var xAttribute2 = firstOrDefault.Document.Descendants("param").
                    Attributes().FirstOrDefault(attrib => attrib.Value == "UpdateIp");

                if (xAttribute2 != null && xAttribute2.Value.ToLower().Equals("true"))
                {
                    var xAttribute = firstOrDefault.Document.Descendants("param").
                        Attributes().FirstOrDefault(attrib => attrib.Value == "RemoteAddress");
                    if (xAttribute != null)
                        xAttribute.NextAttribute.SetValue(
                            IPAddresses.GetLocalIp().ToString());
                }
            }

    XmlConfigurator.Configure(...

2012年7月17日編集

他にlog4netエラーはありませんでした(UDPアペンダーを使用)。問題は受信機にありました。

4

1 に答える 1

1

私にとってはうまくいきますが、ファイルにログを記録しています。

ビューを使用しているものは何でも、ログが出力を再フォーマットしていませんか?

于 2012-07-14T12:42:40.657 に答える