2012-07-13 33 views
1

有谁知道如何指定日期格式,以便前导零不会出现在日志中?我知道这听起来很挑剔,但另一个过程是阅读我的日志,似乎不喜欢前导零。Log4Net日期和时间没有前导零(转换模式)

我使用:

<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> 

而且我得到这个:

07/10/2012上午9时20分39秒......

如果可能的话,我想得到:

2012年7月10日上午九时20分39秒

我试图简单地使用:%日期{M/DD/YYYY H:MM:SS TT} 但它没有工作(也似乎很奇怪,当需要两个字符的)

编辑于12年7月15日:

我还没回来,所以我没有检查了办公室然而,UDP错误,但如果任何人在那里要扩展一个appender简单地增加一个属性来传递到您的应用程序:

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> 

我检查新PARAM调用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(... 

编辑7/17/12

我没有其他log4net错误(与UDP appender)。问题在于接收器。

回答

1

适用于我,但我正在登录到一个文件。

你确定无论你使用的是什么视图日志没有重新格式化输出?

+0

嗯。我感到很傻。它似乎也适用于我。读取我的UPD(syslog)appender的过程中,我必须遇到另一个问题。感谢您的验证。我不确定前几天我在做什么。 – chrismead 2012-07-14 17:48:06

相关问题