使用场景
在某些时候,我们需要动态控制日志的打印级别。比如在执行某个操作的时候,需要DDLogLevelVerbose
级别,执行完成后需要DDLogLevelInfo
级别,这时候之前的日志级别设置就没有能力来实现.
之前的实现
1 |
|
后面想到,是不是只要改变ddLogLevel
的值就可以实现了呢?改成
1 |
|
去掉了const
修饰符,然后随便在一个按钮响应函数里面设置成
1 | ddLogLevel = DDLogLevelError; |
测试了下,点击了按钮,发现没有作用,只能另外再找方法。
DDRegisteredDynamicLogging
后来在翻看DDLog.h
文件时发现了DDRegisteredDynamicLogging
这个协议,里面提供了2个静态方法
1 | + (DDLogLevel)ddLogLevel; |
里面还有段说明文字:
1 | Implement these methods to allow a file's log level |
看样子貌似可以,说干就干。新建一个类,实现DDRegisteredDynamicLogging
协议。
DDDynamicLogLevel.h
1 |
|
DDDynamicLogLevel.m
注意 这里新建一个静态变量,用于动态控制日志级别
1 | static DDLogLevel s_ddLogLevel = DDLogLevelVerbose; |
然后将之前定义的日志级别宏定义替换为
1 |
注意引入头文件DDDynamicLogLevel.h
,再测试,
1 | [DDDynamicLogLevel ddSetLogLevel:DDLogLevelError]; |
发现起作用了,打完收工~
结尾
就到这里了,祝大家使用愉快!