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