2

我有一个使用 Common.Logging 进行日志记录的可安装 ASP.Net 应用程序。

编写日志消息时,即:

_log.InfoFormat(CultureInfo.???, "{0}: Writing to the Log", DateTime.UtcNow);

我对应该使用哪种文化感到困惑。我想要的结果是使用服务器的区域设置格式化日志消息。这样,当管理员安装应用程序时,他们就可以控制日志消息的格式。

有四个选项,但似乎没有一个是正确的选择:

  • CultureInfo.CurrentCulture:这似乎是 Windows 应用程序的正确选择,但 ASP.Net 正在更改它以匹配浏览网站的用户 - 因此它适合格式化内容以显示给用户,但不适用于写入日志.
  • CultureInfo.CurrentUICulture:与 CurrentCulture 类似的问题 - 将匹配当前浏览网站的用户。
  • CultureInfo.InstalledUICulture:系统安装的文化 - 似乎与安装的 Windows 副本有关,但用户无法更改。显然这个有点没用
  • CultureInfo.InvariantCulture:这不是用户可配置的。我想知道这是否是这里四个选项中最好的一个,因为至少它是一致的,并且不会因浏览网站的人/安装媒体窗口的人而异。

我想知道是否需要在我的 web.config 中为系统文化添加显式配置,以便安装程序可以选择一种文化。我真正想要的答案是在 ASP.Net 更改它以匹配当前用户之前 CultureInfo.CurrentCulture 是什么。

注意:我知道我可以关闭 ASP.Net,更改每个用户的 CurrentCulture,但 UI 依赖于这种行为。

4

1 回答 1

1

管理员喜欢控制日志。告诉他们去配置他们的服务器文化,以便日志采用特定格式对我来说似乎不是最好的解决方案。

在 web.config 中添加配置选项是个好主意。这将让管理员根据需要配置日志格式。

无需询问用户,您可以在安装时使用CultureInfo.CurrentCulture. 如果用户希望它是不同的东西,他总是可以改变它。

如果您确实想从配置中获取它CultureInfo.CurrentCulture而不是配置,您可以在Application_Start事件期间选择它,并将其保存在应用程序上下文中。

于 2012-10-30T03:41:46.560 回答