![]() |
1
22
根据您所设计的,看起来最简单的解决方案是给爬行器一个模块方法,它返回一个模块ivar。
或者你可以用
它的作用完全相同。 |
![]() |
2
97
我喜欢
然后,在你的课堂上:
因为
你的
|
![]() |
3
11
正如Zenagray所指出的,从类方法中进行日志记录被排除在Jacob的答案之外。一个小的添加解决了这个问题:
预期用途是通过“包括”来实现的:
生产:
注意,在所有四种情况下,记录器的ID都是相同的。如果要为每个类使用不同的实例,则不要使用
同一个程序现在产生:
注意前两个ID是相同的,但与第二个ID不同,这两个ID显示我们有两个实例——每个类一个实例。 |
![]() |
4
4
灵感来源于这条线,我创造了 easy_logging 宝石。 它结合了讨论的所有功能,例如:
安装:
用途:
产量
更多细节 GitHub . |
![]() |
5
2
可能是一些奇怪的红宝石魔法,可以让你避免它,但有一个相当简单的解决方案,不需要奇怪。只需将记录器放入模块并直接访问它,通过一种机制设置它。如果你想对它保持冷静,定义一个“懒惰的记录器”,保持一个标志来表示它是否有一个记录器,或者悄悄地丢弃消息直到记录器被设置,在记录器被设置之前抛出一个异常的东西被记录,或者将日志消息添加到一个列表中,这样一旦记录器被定义,它就可以被记录。 |
![]() |
6
2
一小段代码来演示这是如何工作的。我只是创建一个新的基本对象,这样我就可以观察到对象ID在整个调用过程中保持不变:
此代码的输出如下所示:
谢谢你们的帮助! |
![]() |
7
1
如何将记录器包装在一个单独的实例中,然后您可以使用mylogger.instance访问它 |
![]() |
8
0
根据你的意见
如果您不局限于默认的日志记录器,那么您可以使用另一个日志gem。 作为一个例子 log4r :
在prod模式下,日志数据存储在一个文件中(附加到现有文件,但有创建新日志文件或实现滚动日志文件的选项)。 结果:
如果使用log4r(a)的继承机制,可以为每个类(或在下面的示例中为每个实例)定义一个记录器,并共享输出器。 例子:
结果:
(a)记录器名称,如
这种方法的一个优点是:如果您想为每个类使用一个记录器,只需更改记录器的名称。 |
![]() |
9
0
虽然这是一个老问题,但我认为有必要记录下不同的方法。 基于雅各布的回答,我建议您在需要时添加一个模块。 我的版本是:
我把它保存到一个方便的模块库中,我会这样使用它:
我发现这比我目前看到的其他选择更容易和更通用,所以我希望它能帮助你解决你的问题。 |
![]() |
Abdullah Chaudhry · json文件上的文件旋转和删除 2 年前 |
![]() |
Max S · 如何从CMD读取日志的所有输出 7 年前 |
![]() |
Ivan Denchev · Apache-过去一小时的日志 7 年前 |
![]() |
ninja.coder · Log4j中的字符串串联性能 7 年前 |
![]() |
Rich · 如何记录日志。是否与操作员一起调试? 7 年前 |