当前位置: 首页 > wzjs >正文

做网站服务好制作返利网站

做网站服务好,制作返利网站,百度小程序优化合作公司,wordpress能干什么Logger, Appenders 和 Layouts Appenders 和 Layouts 基于日志记录器选择性地启用或禁用日志记录请求只是其中的一部分功能。Logback允许将日志记录请求输出到多个目标。在Logback术语中,输出目标被称为Appender。 目前,已经存在适用于控制台、文件、远…

Logger, Appenders 和 Layouts

Appenders 和 Layouts

基于日志记录器选择性地启用或禁用日志记录请求只是其中的一部分功能。Logback允许将日志记录请求输出到多个目标。在Logback术语中,输出目标被称为Appender。
目前,已经存在适用于控制台、文件、远程套接字服务器、MySQL、PostgreSQL、Oracle及其他数据库、JMS以及远程Unix系统日志守护进程的Appender。

一个Logger可以添加多个appender。

addAppender方法可以将Appender添加到给定的Logger中。每个启用的日志请求都会被转发到给定的Logger的Appender中,以及Logger层次结构的更高级别的Appender中。
换句话说,Appender是通过日志记录器层次结构累加继承的。比如,一个输出到控制台的Appender被添加到根Logger中,那么所有的启用的日志请求至少都会在控制台打印输出;
此外,如果一个输出到文件的Appender被添加到一个名为L的Logger中,那么所有L的启用日志请求以及L子级的启用日志请求都会输出到文件中并在控制台打印输出。
当然,我们可以通过设置Logger的additivity标记为false来取消这种默认的累计输出模式。

下面是控制Appender可加性的规则总结。

假如我们有一个叫L的Logger,L的日志输出会被发送到L以及其父级包含的所有Appender中。然而,如果L有一个父级Appender P,P的`additivity`标记为`false`,那么L的日志输出
会定向输出到L以及其到父级P为止所包含的所有Appender中。Logger的`additivity`标记默认都是true。

下表是一个示例:

Logger NameAttached AppendersAdditivity FlagOutput TargetsComment
rootA1not applicableA1Since the root logger stands at the top of the logger hierarchy, the additivity flag does not apply to it.
xA-x1, A-x2trueA1, A-x1, A-x2Appenders of “x” and of root.
x.ynonetrueA1, A-x1, A-x2Appenders of “x” and of root.
x.y.zA-xyz1trueA1, A-x1, A-x2, A-xyz1Appenders of “x.y.z”, “x” and of root.
securityA-secfalseA-secNo appender accumulation since the additivity flag is set to false. Only appender A-sec will be used.
security.accessnonetrueA-secOnly appenders of “security” because the additivity flag in “security” is set to false.

很多时候,用户希望不仅仅是自定义日志的输出路径,同样希望自定义日志的输出格式。这可以通过配置Appender关联的Layout来完成。Layout负责根据用户的意愿格式化日志记录请求,
而Appender则负责将格式化的输出发送到其目的地。PatternLayout是Logback中标准的Layout实现,它允许用户根据类似于C语言printf函数的转换模式指定输出格式。

比如,PatternLayout设置转换参数为%-4relative [%thread] %-5level %logger{32} - %msg%n时,会有以下输出:

176  [main] DEBUG manual.architecture.HelloWorld2 - Hello world.

第一部分字段表示程序运行到现在所经过的毫秒数,第二个部分字段表示发出日志请求的线程,第三部分字段表示日志的级别,第四部分字段表示日志的输出位置,-字符后是日志的消息内容。

参数化日志记录

在logback-classic中,日志记录器实现了SLF4J的日志记录接口,一些日志记录器方法允许接收多个参数。这些打印方法变体的主要目的是提高性能并最小化对代码可读性的影响。

比如一些日志打印这样书写:

logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));

这样确实会有一些消息参数构建的成本,比如类型转换(数值和对象转字符串)以及字符串连接。无论我们是否真的需要输出这条信息,都需要消耗这个成本。

一个可能的解决方法是使用判断语句来避免参数构建的成本。以下是一个例子。

if(logger.isDebugEnabled()) {logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}

如果日志没有启用DEBUG级别,那么参数构造的开销就没有了。从另一方面讲,启用DEBUG级别时,代码将会有两次判断日志是否是可用的,
第一次是在isDebugEnabled()方法中,第二次是在debug()方法中。实际上,这种开销并不重要,因为判断的时间不到实际日志请求时间的1%。

更好的替代方法

基于消息格式化存在一种更便捷的方式,假如entry是一个对象:

Object entry = new SomeObject(); 
logger.debug("The entry is {}.", entry);

只有当日志被允许输出的时候,才会开始执行消息格式化,并使用entry的字符串替换{}。换句话说,在禁用日志语句时,这种形式不会产生参数构建的成本。

以下两行将产生完全相同的输出。但是,如果禁用日志记录语句,则第二种变体的表现至少比第一种变体好30倍。

logger.debug("The new entry is "+entry+".");
logger.debug("The new entry is {}.", entry);

两个参数的同样可以,示例:

logger.debug("The new entry is {}. It replaces {}.", entry, oldEntry);

如果需要传递三个或更多参数,还可以使用varargs(Object…)变体。例如,您可以编写:

logger.debug("Value {} was inserted between {} and {}.", newVal, below, above);

请注意,varargs变体需要创建Object[]实例的开销。


文章转载自:

http://9o7zyGc7.rwtLj.cn
http://DR1GKx5w.rwtLj.cn
http://6WsxUUNm.rwtLj.cn
http://6mNOrc7M.rwtLj.cn
http://EGnXN3Kt.rwtLj.cn
http://ioh9fT5d.rwtLj.cn
http://xEMBVGcC.rwtLj.cn
http://fsMGcUpv.rwtLj.cn
http://ZIQdbnOc.rwtLj.cn
http://29nVQtBc.rwtLj.cn
http://xkCroJn2.rwtLj.cn
http://fdyzYVTp.rwtLj.cn
http://QGNhb60t.rwtLj.cn
http://xJpo6XCc.rwtLj.cn
http://adrqaGOj.rwtLj.cn
http://IVNnXof2.rwtLj.cn
http://qaGWX8Tq.rwtLj.cn
http://girtZaDv.rwtLj.cn
http://au6DqepJ.rwtLj.cn
http://wxixS5TP.rwtLj.cn
http://2ZZId5wC.rwtLj.cn
http://z72CkaTf.rwtLj.cn
http://q7ZMO0K1.rwtLj.cn
http://MEtZvyKb.rwtLj.cn
http://uTMuW5E8.rwtLj.cn
http://IDJBWXm2.rwtLj.cn
http://kGA4OwPQ.rwtLj.cn
http://nroMQ4ZX.rwtLj.cn
http://abdZiXvV.rwtLj.cn
http://CiqbsZTp.rwtLj.cn
http://www.dtcms.com/wzjs/654587.html

相关文章:

  • 做网站哪个公司比较好做网站必须备案吗
  • 做网站运营用什么配置电脑做陌陌网站什么做
  • 泰州网站优化公司wordpress ask me
  • 网站cms系统下载企业网站建设记什么会计科目
  • 烟台网站推广网站开发流程说明
  • 自助发外链网站建造师报名时间2023年官网
  • 做资讯网站盈利wordpress设置邮箱
  • 邮箱官方网站注册视频社区app源码
  • 网络营销教学网站网站建设方案书模板 备案
  • 建立网站站点方法什么是响应式的网站
  • 广州网站建设报价表淘宝无货源一键铺货软件
  • 昆山花桥做网站网站解析打不开
  • 网站 运营工作如何做wordpress主题上传图片教程
  • 上海营销型网站seo网站的设计流程
  • 用墨刀做视频网站电商企业有哪些
  • 平潭县机场建设网站做网站难吗?
  • wordpress 登陆界面襄阳抖音seo找哪家
  • 网站改版301怎么做如何做简单视频网站
  • 企业网站结构asp.net mvc做网站难吗
  • 自己弄个网站昌吉建设网站
  • 企业商城网站建设方案顺德网站建设基本流程
  • 网站模块制作知名企业门户网站建设联系电话
  • 网站不被收录了远大科技 网站建设
  • 公司建站电脑QQ浮动窗口怎做电脑网站
  • 深圳设计网页制作公司seo是什么职业做什么的
  • 响应式网站推广长春网络建站
  • 镇江网站网站建设少儿编程加盟哪个品牌好
  • 用了wordpress的网站aaa免费服务器
  • 青海建设厅网站黑名单班级网站建设思路
  • 背景色搭配网站北京大学网络服务