ACE_Log_Msg貌似很灵活,却相当难于使用:
1. ACE_Log_Msg在每个线程都有一个instance(使用了TSS), 而在新创建的线程又不继承旧线程的属性,所以如果对ACE_Log_Msg对象有什么特殊配置,则每个新创建的线程都得做这样的配置。最常用的设置就是输出到文件,ACE默认输出到STDERR, 所以基本上总会遇到这个问题。这样搞得代码很丑陋,很多个地方有得有ACE_Log_Msg_Init这样的初始化函数调用,头疼的是初始化函数总是要有几个参数的,还得想办法把参数传递给他。。。
2. 运行时配置麻烦!想通过配置文件在运行时动态改变ACE_Log_Msg的行为,居然还得通过ACE_Service_Config这样的东西,实在是麻烦。
3. 上面两个问题的结果是,要想能正确的,按照我需要的样子打LOG,要做太多的准备。