其中一个设计的反面教材 -- Log4J

发布于 2021-11-13 12:25:08 字数 407 浏览 983 评论 6

我忘记这个家伙到底有多大了, 但是我用C语言来表达,就是这样:

#define LOG_INFO 1
#define LOG_NOTICE 2
#define LOG_DEBUG 4
#define LOG_FATAL 8
#define LOG_ALL 15

#define D_PRINTF(fmt,arg...){
        if((g_debug_level|LOG_FATAL )& fmt){
                fprintf(stderr,arg); 
        }
}
可以强制LOG_FATAL打印, 如果应用程序员写入日志,定向stderr即可. 可以指定 log level,用于控制运行时是否输出日志.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

小情绪 2021-11-17 10:38:39

log4j是有一些反应OO和设计模式设计思想的东西在里面。但这不是他里面类多和包大的根本原因。我觉得宏哥说的太绝对了。往简单的说功能确实是。因为log4j定位是给别人用的做功能支持,他必须要适应不同的需求,比如不同的配置方式,不同的输出格式(他不止输出文本行的,也有XML格式),给使用者能够方便扩展的空间,考虑的就相对的更繁琐。

有些时候确实觉得有些开源项目功能太繁琐不想用他自带的包,自己也会写个公司自己用的日志类之类的工具类,就像宏哥范例给的那样确实简单,一两个静态方法搞定,没什么复杂的继承关系,但是是否适合其他公司用,就无法保证了。也许需求变了又要重新写代码。OO和模式理解了确实用的恰到好处的话,确实能解决一些经常变化需求的东西。还是那句话,不能为要用模式而套模式。

一楼那种用日志等级来控制程序的流程,就像是用异常来控制程序的流程一样的,虽然有些时候确实方便了自己,但是后面接手的人看代码的时候就难说了,而且控制流程也不是一开始设计它们的本意。

傾城如夢未必闌珊 2021-11-17 07:52:43

log4j是有一些反应OO和设计模式设计思想的东西在里面。但这不是他里面类多和包大的根本原因。我觉得宏哥说的太绝对了。往简单的说功能确实是。因为log4j定位是给别人用的做功能支持,他必须要适应不同的需求,比如不同的配置方式,不同的输出格式(他不止输出文本行的,也有XML格式),给使用者能够方便扩展的空间,考虑的就相对的更繁琐。

有些时候确实觉得有些开源项目功能太繁琐不想用他自带的包,自己也会写个公司自己用的日志类之类的工具类,就像宏哥范例给的那样确实简单,一两个静态方法搞定,没什么复杂的继承关系,但是是否适合其他公司用,就无法保证了。也许需求变了又要重新写代码。OO和模式理解了确实用的恰到好处的话,确实能解决一些经常变化需求的东西。还是那句话,不能为要用模式而套模式。

一楼那种用日志等级来控制程序的流程,就像是用异常来控制程序的流程一样的,虽然有些时候确实方便了自己,但是后面接手的人看代码的时候就难说了,而且控制流程也不是一开始设计它们的本意。

把昨日还给我 2021-11-17 02:21:20

log4j是有一些反应OO和设计模式设计思想的东西在里面。但这不是他里面类多和包大的根本原因。我觉得宏哥说的太绝对了。往简单的说功能确实是。因为log4j定位是给别人用的做功能支持,他必须要适应不同的需求,比如不同的配置方式,不同的输出格式(他不止输出文本行的,也有XML格式),给使用者能够方便扩展的空间,考虑的就相对的更繁琐。

有些时候确实觉得有些开源项目功能太繁琐不想用他自带的包,自己也会写个公司自己用的日志类之类的工具类,就像宏哥范例给的那样确实简单,一两个静态方法搞定,没什么复杂的继承关系,但是是否适合其他公司用,就无法保证了。也许需求变了又要重新写代码。OO和模式理解了确实用的恰到好处的话,确实能解决一些经常变化需求的东西。还是那句话,不能为要用模式而套模式。

一楼那种用日志等级来控制程序的流程,就像是用异常来控制程序的流程一样的,虽然有些时候确实方便了自己,但是后面接手的人看代码的时候就难说了,而且控制流程也不是一开始设计它们的本意。

瀞厅☆埖开 2021-11-16 15:35:19

把上面的翻译一下,变成别的语言,log4a、log4b、log4c。。。。成了
下面这2个怎么算?
http://www.oschina.net/p/zlog
http://www.oschina.net/p/log4cplus

德意的啸 2021-11-15 20:18:16

你用得太少了。我见过有人用它来控制流程(例如:DEBUG模式访问测试数据库,INFO以上访问正式数据库),哈哈,虽然有点狗血,但是居然很管用。

不再见 2021-11-14 18:39:25

你用得太少了。我见过有人用它来控制流程(例如:DEBUG模式访问测试数据库,INFO以上访问正式数据库),哈哈,虽然有点狗血,但是居然很管用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文