playframework 一步一步来 之 日志 (二)
带着之前的疑问,我们先回顾一下日志相关的知识:
首先是SL4J,SL4J是个什么东西来着?官方解释为:“The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time.” 这非常好理解,它说:“
SL4J是java的日志框架的一个接口规范,利用这个规范,它允许用户在合适的时间衔接他想要的日志框架。”可见,SL4J是一个规范性的接口,而java.util.logging,logback,log4j是SL4J的具体实现,我们在使用SL4J的时候,最好要用SL4J绑定具体框架(e.g. java.util.logging, logback, log4j)的方式,而不是直接用日志框架。
目前用的最最广泛的日志框架是log4j,而且是直接用;但是当前比较流行的用法是:SL4J+logback。
我们闲话少说,回顾一下之前的问题:play是如何实现,只定义一个Logger,就可以打印的呢?
每当遇到问题,最直接的解决方式我认为有两种:1、翻阅官方文档:https://www.playframework.com/documentation/2.3.x/SettingsLogger(这是我翻阅出来的详细地址) 2、程序调试(时间耗费或许会长一点,但是收获绝对多)。
经过一番折腾,我终于发现了端倪:
在play的源码中,出现了下图这两个似成相识的文件:
呵呵,为何它俩和logback的配置文件如此相似???我们打开看看:
这下醉了吧:这特么的就是logback的配置文件好吗?人家还明显说明了:“The default logback configuration that Play uses if no other configuration is provided”
再从代码角度看看,哪里用了这两个文件:
标红框的地方写的清楚吧:application-logger.xml and logger.xml are deprecated methods for supplying the configuration , logback.xml is the documented method, logback-play-default.xml is the fallback that Play uses if no other file is found
人家说:“用application-logger.xml和logger.xml定义成logback的配置文件时可以滴,但是不是很好,写成logback.xml 才是王道,如果没有配置文件,也不用担心,我们还有logback-play-default.xml 这个备胎呢” 我们不禁好奇:那logback-play-dev.xml是做什么的呢? 我们看一下这个文件和那个条件语句:
“env.mode == Mode.Dev”很明显,是在说“在某种模式下”,打开logback-play-dev.xml:
它说:“play在用dev的模式下”用这个。
继续追踪:
发现存在三种模式:Dev、Test和Prod,由之前的代码文档和play文档推断,正常情况下应该不是Dev 模式,显然也不是Test模式,应该是Prod模式。那如何切换到其他模式呢,在play 1.XX的版本中,直接可以在application.conf中设置,但是最新的2.3版本没有了此设置,到底为何,这是另一个问题了,以后探讨。
好了,现在我们知道了,为何play只需定义一个Logger就可以直接打印日志了吧:因为play默认加载了logback-play-default.xml这个文件,这个文件中定义了日志打印的一些配置:appender和pattern。那我们如何自定义一个logback的配置文件呢?
请听下回分解。
playframework 一步一步来 之 日志 (二)的更多相关文章
- 一步一步教你编写与搭建自动化测试框架——python篇
[本文出自天外归云的博客园] 这两天用python写了一个自动化测试框架,取名为Auty.准备用来做Web方面的接口测试,以下为Auty框架一步一步的搭建过程——
- 一步一步搭建Jenkins环境
Jenkins使用经验谈1(一步一步搭建Jenkins环境)在公司使用 Jenkins 软件已经有一段时间了,走了很多弯路,但也积累了一些经验,可以和大家分享一下.我们来一起搭建Jenkins环境.首 ...
- 一步一步实现iOS微信自动抢红包
微信红包 前言:最近笔者在研究iOS逆向工程,顺便拿微信来练手,在非越狱手机上实现了微信自动抢红包的功能. 此教程所需要的工具/文件 yololib class-dump dumpdecrypte ...
- 跟我一步一步开发自己的Openfire插件
http://www.blogjava.net/hoojo/archive/2013/03/07/396146.html 跟我一步一步开发自己的Openfire插件 这篇是简单插件开发,下篇聊天记录插 ...
- 一步一步在Windows中使用MyCat负载均衡 下篇
之前在 一步一步在Windows中使用MyCat负载均衡 上篇 中已经讲了如何配置出MyCat.下面讲其相关的使用. 五.配置MyCat-eye 对于MyCat监控官网还提供一个MyCat-eye w ...
- 【DG】[三思笔记]一步一步学DataGuard
[DG][三思笔记]一步一步学DataGuard 它有无数个名字,有人叫它dg,有人叫它数据卫士,有人叫它data guard,在oracle的各项特性中它有着举足轻理的地位,它就是(掌声)..... ...
- jumpservice一步一步安装
一步一步安装 (CentOS) 本文档旨在帮助用户了解各组件之间的关系, 生产环境部署建议参考 进阶安装文档 云服务器快速部署参考 极速安装 安装过程中遇到问题可参考 安装过程中常见的问题 测试推荐环 ...
- 一步一步搭建 oracle 11gR2 rac+dg之grid安装(四)【转】
一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之grid安装 (四) 转自 一步一步搭建 oracle 11gR2 rac+d ...
- 一步一步搭建oracle 11gR2 rac+dg之database安装(五)【转】
一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之database安装 (五) 转自 一步一步搭建oracle 11gR2 ...
- 一步一步搭建11gR2 rac+dg之安装rac出现问题解决(六)【转】
一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之安装rac出现的问题 (六) 本文转自 一步一步搭建11gR2 rac+dg之 ...
随机推荐
- 黄聪:分享几个免费IP地址查询接口(API)
淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...
- ps-如何去背景色(将背景色变透明)
由于生活或工作的需求,图片的处理是必不可少.其中将图片某一部分变为透明,或者截取图片的某一部分比较常见. 1.首先,打开待处理的图片: 2.复制背景图层,将背景图层设为不可见(左边的眼睛即可),选择左 ...
- 第17课 类型萃取(1)_基本的type_traits
1. type_traits类型萃取 (1)type_traits通过定义一些结构体或类,并利用模板类特化和偏特化的能力,给类型赋予一些特性,这些特性根据类型的不同而异.在程序设计中可以使用这些tra ...
- 学习MeteoInfo二次开发教程(七)
1.站点文件 12010615.syn在D:\Program Files (x86)\MeteoInfo\SampleSYNOP_Stations.csv在D:\Program Files (x86) ...
- cookies的常见方式
cookie有如下特点 保存在客户端,一般由浏览器负责存储在本地. 通常是加密存储的,不过由于存储在本地,很难保证数据不被非法访问,并不怎么安全,所以cookies中不宜保存敏感信息,如密码等. 哪些 ...
- linux环境下载和安装scala
Linux下安装Scala和Windows下安装类似,步骤如下: 1.首先访问下载链接:http://www.scala-lang.org/download/默认这里下载的是Windows版本,这时点 ...
- SpringBoot 试手(简易的SpringBoot搭建步骤)
SpringBoot 也算AI吧,它根据您架构中引用的依赖,自动化地按默认方案帮您完成了Spring那些复杂繁琐的配置工作.为了让您不会看低此 AI 水平,还特地喊出了“约定大于配置”的口号.从这个角 ...
- mysql 乐观锁实现
一.为什么需要锁(并发控制)? 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突.这就是著名的并发性问题. 典型的冲突有: 1.丢失更新:一个事 ...
- 关于如何安装使用Git、tortoiseGit、Git@osc
摘要: 讲解git在git@osc上使用的正确入门姿势. 关于Git代码托管的好处,这里就不再进行说明了.相信想去使用的人都应该有所了解啦.在使用开源中国里面的git@osc时,我们得先做入下几个工作 ...
- html网页练习豆瓣网
html </head> <body> <!-- 头部 --> <header class="header1"> ...