首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CodeSite类别和线程

CodeSite类别和线程
EN

Stack Overflow用户
提问于 2011-10-07 20:00:58
回答 1查看 709关注 0票数 2

我正在试验捆绑到CodeSite XE中的Delphi。我想像这样使用Category特性:

代码语言:javascript
复制
CodeSite.Category := 'SomeCategory';
CodeSite.EnterMethod ('SomeMethod');
try
  DoSomething;
finally
  CodeSite.ExitMethod ('SomeMethod');
end;

问题是,如果DoSomething还包含设置类别的日志记录代码,那么ExitMethod将以不同的类别结束,并将破坏查看器中的整个层次结构。

更糟糕的是,如果使用线程:设置Category然后调用日志命令显然不是原子操作,因此使用CodeSite日志记录的两个线程不能真正使用Category。至少在我的日志中是这样的。我原本期望Category是线程本地的,但它似乎不是。

在嵌套日志记录和线程上下文中处理类别的正确模式是什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-07 20:10:35

创建另一个Codesite对象,可能每个线程一个,并设置该对象类别。

有多种方法可以做到这一点。您可以有一个特定的对象,如MyThreadCodesite : TCodeSite;,您可以将其写入,或者您可以为线程定义一个称为"Codesite“的属性并引用该对象。因此,您的线程代码看起来完全一样,因为它说的是"Codesite.Send('hello');“,但引用了线程的对象。

一旦你这样做了,它就能很好地工作。我在一个项目中有大约10个TCodesite对象,着色让您可以轻松地看到系统的哪个部分在做什么。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7686941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档