我正在试验捆绑到Delphi XE中的CodeSite Express。我想用Category
功能是这样的:CodeSite类别和线程
CodeSite.Category := 'SomeCategory';
CodeSite.EnterMethod ('SomeMethod');
try
DoSomething;
finally
CodeSite.ExitMethod ('SomeMethod');
end;
的问题是,如果DoSomething
包含日志代码以及那台类别,比ExitMethod
将在不同的类别结束,将炸毁整个层次在观众中。
更糟糕的是,如果线程开始:设置Category
然后调用日志命令显然不是原子操作,所以使用CodeSite日志的两个线程不能真正使用Category
。至少这就是它在我的日志中的样子。我本以为Category
是线程本地的,但似乎没有。
在嵌套日志记录和线程的上下文中处理类别的正确模式是什么?
谢谢!
+1谢谢!这很好。 – jpfollenius
有趣。我们也在使用多个代码段对象。每个都记录到不同的文件。每个也必须支持多个类别。我们不愿意承担时间处罚,所以我们不锁定并且目前“遭受”有时出错的着色。由于我们可以拥有大量(大部分是休眠)线程,所以我不确定每个自己的代码库实例都可以为我们工作。特别是因为我们当前的codesite后代不使用调度程序,而是直接登录到文件。但看到你的答案给了我一些想法,我将追求...谢谢! –