文档章节

logback系列之二:输出日志到文件

小代码2016
 小代码2016
发布于 2016/03/25 11:36
字数 270
阅读 70
收藏 0
logback系列之一:输出日志到控制台 类似,改动的地方: 

1. logback[-test].xml文件:  
Java代码   收藏代码
  1. <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">  
  2.     <file>/logs/granularity.log</file>  
  3.     <encoder><!-- 必须指定,否则不会往文件输出内容 -->  
  4.         <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>  
  5.     </encoder>  
  6.     <append>true</append>  
  7.     <prudent>false</prudent>  
  8. </appender>  
  9.   
  10. <root level="DEBUG">  
  11.     <appender-ref ref="fileAppender" />  
  12. </root>  


调用测试类的方法,生成granularity.log文件。 

附: 
①. prudent:小心的,慎重的。如果设置为true,不同JVM的file appenders能够安全地将日志输出到同一个文件中。 
    这是通过锁定文件通道实现的: 

Java代码   收藏代码
  1. protected void writeOut(E event) throws IOException {  
  2.   if (prudent) {  
  3.     safeWrite(event);  
  4.   } else {  
  5.     super.writeOut(event);  
  6.   }  
  7. }  
  8.   
  9. private void safeWrite(E event) throws IOException {  
  10.   ResilientFileOutputStream resilientFOS = (ResilientFileOutputStream) getOutputStream();  
  11.   FileChannel fileChannel = resilientFOS.getChannel();  
  12.   if (fileChannel == null) {  
  13.     return;  
  14.   }  
  15.   FileLock fileLock = null;  
  16.   try {  
  17.     fileLock = fileChannel.lock(); // 加锁  
  18.     long position = fileChannel.position();  
  19.     long size = fileChannel.size();  
  20.     if (size != position) {  
  21.       fileChannel.position(size);  
  22.     }  
  23.     super.writeOut(event);  
  24.   } finally {  
  25.     if (fileLock != null) {  
  26.       fileLock.release(); // 释放锁  
  27.     }  
  28.   }  
  29. }  


②. 当prudent为true时,如果append设置为false,会被强行转成true。 
    这是在start方法中处理的: 

Java代码   收藏代码
  1. if (prudent) {  
  2.   if (!isAppend()) {  
  3.     setAppend(true);  
  4.     addWarn("Setting \"Append\" property to true on account of \"Prudent\" mode");  
  5.   }  
  6. }  

本文转载自:http://czj4451.iteye.com/blog/1975220

共有 人打赏支持
小代码2016
粉丝 37
博文 328
码字总数 153495
作品 0
安阳
程序员
私信 提问

暂无文章

脚本配置java开发环境

@echo off&setlocal enabledelayedexpansion cls @echo "This script is used to registe envionment variables......" @echo. @echo. @echo. set var=%~dp0 set var=%var:~,-1% @echo "regi......

默克鱼
25分钟前
1
0
c++中友元函数理解与使用

在学习c++这一块,关于友元函数和友元类,感觉还是不好理解,但是井下心来,理解,需要把我一下几点。 首先讲友元函数。 (1)友元函数: 1)C++中引入友元函数,是为在该类中提供一个对外(除...

天王盖地虎626
今天
2
0
OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
703
11
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
5
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部