我知道参数不能传递给静态构造函数。但我正在使用带有参数的静态类,因此我初始化一个变量,我必须为这个类函数的每个用法重复行
这是我的记录器类(它使用log4net,但不是这样):
public static class Logger
{
private static ILog log {get; set;}
static Logger()
{
log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
public static void Error(object msg, string userip)
{
log4net.LogicalThreadContext.Properties["ClientIp"] = userip;
if (log.IsErrorEnabled)
{
log.Error(msg);
}
}
public static void Error(object msg, string userip, Exception ex)
{
log4net.LogicalThreadContext.Properties["ClientIp"] = userip;
if (log.IsErrorEnabled)
{
log.Error(msg, ex);
因为您认为我必须添加自定义" ClientIp"各种日志方法的字段。但我不想重复
log4net.LogicalThreadContext.Properties [" ClientIp"] = userip;
每种方法的行 我希望我可以像这样编辑构造函数:
static Logger()
{
log4net.LogicalThreadContext.Properties["ClientIp"] = userip;
log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
但我不能将参数传递给静态构造函数..任何建议?
答案 0 :(得分:0)
创建一个Initialize
方法,您只能调用一次:启动时。传入您只需设置一次的变量。在所有后续调用中,您可以重用这些值。