有选择性地启用或禁用记录请求仅仅是logback功能的冰山一角。Logback允许打印记录请求到多个目的地。在logback里,一个输出目的地称为一个appender。
目前有控制台、文件、远程套接字服务器、MySQL、PostreSQL、Oracle和其他数据库、JMS和远程UNIX Syslog守护进程等多种appender。
一个logger可以被关联多个appender。
方法addAppender为指定的logger添加一个appender。对于logger的每个启用了的记录请求,都将被发送到logger里的全部appender及更高等级的appender。
换句话说,appender叠加性地继承了logger的层次等级。例如,如果根logger有一个控制台appender,那么所有启用了的请求都至少会被打印到控制台。如果logger L有额外的文件appender,那么,L和L后代的所有启用了的请求都将同时打印到控制台和文件。设置logger的additivity为false,则可以取消这种默认的appender累积行为。
控制appender叠加性的规则总结如下。
Appender Additivity
Logger L的记录语句的输出会发送给L及其祖先的全部appender。这就是“appender叠加性”的含义。
然而,如果logger L的某个祖先P设置叠加性标识为false,那么,L的输出会发送给 L与P之间(含P)的所有appender,但不会发送给P的任何祖先的appender。
Logger的叠加性默认为true。
下面的表格中显示了一个示例:
有些用户希望不仅可以定制输出目的地,还可以定制输出格式。这时为appender关联一个layout即可。Layout负责根据用户意愿对记录请求进行格式化,appender负责将格式化化后的输出发送到目的地。PatternLayout是标准logback发行包的一部分,允许用户按照类似于C语言的printf函数的转换模式设置输出格式。
例如,转换模式"%-4relative [thread] -5level %logger{32} - %msg%n"在PatternLayout里会输出形如:176 [main] DEBUG manual.architecture.HelloWorld2 - Hello world.
第一个字段是自程序启动以来的逝去时间,单位是毫秒。
第二个地段发出记录请求的线程。
第三个字段是记录请求的级别。
第四个字段是与记录请求关联的logger的名称。
“-”之后是请求的消息文字。
REF:http://cwiki.ossez.com/pages/viewpage.action?pageId=4719684