Log4Net区域/文化设置

时间:2016-05-04 09:01:31

标签: c# log4net-configuration

如何配置log4nets区域/文化信息设置?

如果我将日期传递给格式方法,则会以美国格式记录,忽略我的应用程序和o / s设置

log.InfoFormat("Invalid date of {0} found in field {1}", date, field.Name);

以月/日/年格式写出日期与日期/月/年不匹配的日期。

我错过了一些非常简单的事情吗?

1 个答案:

答案 0 :(得分:0)

在log4net的默认ILog实现内部,InfoFormatWarnFormatDebugFormat等的所有调用都使用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);
    }