如何配置log4nets区域/文化信息设置?
如果我将日期传递给格式方法,则会以美国格式记录,忽略我的应用程序和o / s设置
log.InfoFormat("Invalid date of {0} found in field {1}", date, field.Name);
以月/日/年格式写出日期与日期/月/年不匹配的日期。
我错过了一些非常简单的事情吗?
答案 0 :(得分:0)
在log4net的默认ILog
实现内部,InfoFormat
,WarnFormat
,DebugFormat
等的所有调用都使用CultureInfo.InvariantCulture
(如果未明确指定) (这些方法有重载)。这有点愚蠢,因为像Thread.CurrentThread.CurrentCulture
之类的东西会更正确,但是我们能做些什么。
因此...您可以显式指定您选择的IFormatProvider以便在那里使用它。例如
log.InfoFormat(CultureInfo.CurrentCulture, "Invalid date of {0} found in field {1}", date, field.Name);
或者,您也可以将其代理到自己的logger类中,该类在内部使用以下区域性在内部调用log4net logger对象:
public static class Logger
{
...
public static void InfoFormat(string pattern, params object[] values)
{
_log4net.InfoFormat(CultureInfo.CurrentCulture, pattern, values);
}