第一:如果问题不对,我真的不知道如何描述它,因为我不是编码专业人员。从另一个班级访问“班级会话”
所以我在主类写了这行:
public Log log = new Log("program.log");
这将启动我的记录器的会话。然后,我使用该会话在我的主类代码中的任何地方写入日志。 但是我正在做另一课的肮脏工作,所以我也想在那里登录。我如何从该类访问相同的“日志会话”?
写入MainClassName.log不起作用。
第一:如果问题不对,我真的不知道如何描述它,因为我不是编码专业人员。从另一个班级访问“班级会话”
所以我在主类写了这行:
public Log log = new Log("program.log");
这将启动我的记录器的会话。然后,我使用该会话在我的主类代码中的任何地方写入日志。 但是我正在做另一课的肮脏工作,所以我也想在那里登录。我如何从该类访问相同的“日志会话”?
写入MainClassName.log不起作用。
不,MainClassName.log
不会工作,因为您的变量是实例变量。这将需要是一个静态变量...或者你必须有一个MainClassName
实例通过它来访问实例变量。
但是,我个人建议你不要使用公共变量。我建议使用私有变量除了“常量”(其中可以是不可变类型的只读变量,而不仅仅是.NET认为常量的东西)之外的所有内容 - 甚至在很多情况下。
我还建议使用类似log4net的东西 - 并且您可能会从每个类使用一个单独的日志记录对象中受益,以便您可以轻松地从不同类开启或关闭日志(或者使用更加精细严格控制严重程度)。
现在创建主类的实例是最简单的解决方案,谢谢您提醒我! – fgblomqvist
如果你想自己控制记录器,你可以实现它作为一个单身,所以你总是来自世界各地得到相同的情况下在你的应用程序域:http://msdn.microsoft.com/en-us/library/ff650316.aspx
我使用log4net的时候惊讶乔恩斯基特建议Trace已经对TraceSource进行了很好的升级。允许您在app.config/web.config中控制不同的输出机制,过滤器,来源和详细程度。
您可以将'log'作为参数传递给其他类的方法吗? 'obj.doSomething(ref log,[other args]);'(在jonskeet <_ <下无法发布答案) –