org.slf4j:slf4j-api:添加日志管理

一个好的程序, 完全可以从Log中, 解决问题. 
一个好的Log系统,是一个程序的关键.

本文介绍的是Logback-Android, 这个库,可以将Log写入到File,写入到数据库,写入到Email,写入到网络. 
当然,最基本的Logcat窗口完美输出,是最基本的;

开源地址: https://github.com/tony19/logback-android 
slf4j地址: http://www.slf4j.org/ 
slf4j API文档: http://www.slf4j.org/api/ 
如果你需要了解更多,请自行百度(谷歌);

logback 官方WIKI: https://github.com/tony19/logback-android/wiki 
logback API文档: http://tony19.github.io/logback-android/doc/1.1.1-4/

推荐阅读: http://blog.csdn.net/haidage/article/details/6794529


1:Module中的build.gradle 添加以下依赖

  1.  
    dependencies {
  2.  
    ...
  3.  
    compile 'org.slf4j:slf4j-api:1.7.21'
  4.  
    compile 'com.github.tony19:logback-android-core:1.1.1-5'
  5.  
    compile 'com.github.tony19:logback-android-classic:1.1.1-5'
  6.  
    }
  • 1

2:在以下位置创建一个logback.xml文件,默认情况下这个路径和文件名是固定的

3:配置logback文件

  1.  
    <!--debug属性用来决定是否打印logback的日志信息-->
  2.  
    <configuration debug='false'>
  3.  
     
  4.  
    <!--声明一个属性,用来指定log文件存放的路径-->
  5.  
    <property name="LOG_DIR" value="/sdcard/rlog"/>
  6.  
     
  7.  
    <!--声明一个时间戳-->
  8.  
    <timestamp datePattern="yyyyMMdd" key="today"/>
  9.  
     
  10.  
    <!--用于在控制台输出的Appender-->
  11.  
    <appender name="LOGCAT" class="ch.qos.logback.classic.android.LogcatAppender">
  12.  
    <encoder>
  13.  
    <pattern>%-5relative [%thread][%file:%M:%line] - %msg%n</pattern>
  14.  
    </encoder>
  15.  
    </appender>
  16.  
     
  17.  
    <!--声明一个FileAppender-->
  18.  
    <appender name="BASE_FILE" class="ch.qos.logback.core.FileAppender">
  19.  
    <!--初始化的时候不创建文件,在第一次使用的时候创建文件-->
  20.  
    <lazy>true</lazy>
  21.  
    <!--log追加到文件,否则覆盖文件-->
  22.  
    <append>true</append>
  23.  
    <!--用来保存log的文件全路径-->
  24.  
    <file>${LOG_DIR}/base.log</file>
  25.  
    <!--输出log的格式-->
  26.  
    <encoder>
  27.  
    <!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} [%file:%line] - %msg%n</pattern>-->
  28.  
    <pattern>%date [%thread] %-5level %logger{36} [%file:%line] - %msg%n</pattern>
  29.  
    </encoder>
  30.  
    </appender>
  31.  
     
  32.  
    <!--声明一个RollingFileAppender-->
  33.  
    <appender name="BASE_ROLL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  34.  
    <file>${LOG_DIR}/base.roll.${today}.log</file>
  35.  
    <append>true</append>
  36.  
    <encoder>
  37.  
    <pattern>%date %-5relative [%thread] %-5level %logger{36} [%file:%M:%line] - %msg%n
  38.  
    </pattern>
  39.  
    </encoder>
  40.  
     
  41.  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  42.  
    <fileNamePattern>${LOG_DIR}/base.roll.%d{yyyy-MM-dd}.log</fileNamePattern>
  43.  
    <!--最大保存7天的日志-->
  44.  
    <maxHistory>7</maxHistory>
  45.  
    </rollingPolicy>
  46.  
     
  47.  
    <!--文件大于10mb,切换文件-->
  48.  
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  49.  
    <maxFileSize>10MB</maxFileSize>
  50.  
    </triggeringPolicy>
  51.  
    </appender>
  52.  
     
  53.  
    <!--指定logtest采用BASE_ROLL_FILE声明的RollingFileAppender输出日志-->
  54.  
    <logger name="logtest">
  55.  
    <appender-ref ref="BASE_ROLL_FILE"/>
  56.  
    </logger>
  57.  
     
  58.  
    <!-- Write INFO (and higher-level) messages to the log file -->
  59.  
    <root level="TRACE">
  60.  
    <appender-ref ref="LOGCAT"/>
  61.  
    </root>
  62.  
     
  63.  
    <!--支持的level-->
  64.  
    <!--TRACE-->
  65.  
    <!--DEBUG-->
  66.  
    <!--INFO-->
  67.  
    <!--WARN-->
  68.  
    <!--ERROR-->
  69.  
     
  70.  
    <!--<pattern>
  71.  
    %d{yyyy-MM-dd HH:mm:ss} [%level] - %msg%n
  72.  
    Logger: %logger
  73.  
    Class: %class
  74.  
    File: %file
  75.  
    Caller: %caller
  76.  
    Line: %line
  77.  
    Message: %m
  78.  
    Method: %M
  79.  
    Relative: %relative
  80.  
    Thread: %thread
  81.  
    Exception: %ex
  82.  
    xException: %xEx
  83.  
    nopException: %nopex
  84.  
    rException: %rEx
  85.  
    Marker: %marker
  86.  
    %n
  87.  
    </pattern>-->
  88.  
     
  89.  
    <!--引用其他位置的配置信息-->
  90.  
    <!--<includes>-->
  91.  
    <!--<include file="/sdcard/foo.xml"/>-->
  92.  
    <!--<include resource="assets/config/test.xml"/>-->
  93.  
    <!--<include resource="AndroidManifest.xml"/>-->
  94.  
     
  95.  
    <!--<include file="/sdcard/logback/logback-test.xml"/>-->
  96.  
    <!--<include file="/sdcard/logback/logback.xml"/>-->
  97.  
    <!--<include resource="AndroidManifest.xml"/>-->
  98.  
    <!--<include resource="assets/logback-test.xml"/>-->
  99.  
    <!--<include resource="assets/logback.xml"/>-->
  100.  
    <!--</includes>-->
  101.  
    </configuration>

还有其他的appender提供,详细说明移步: 
http://logback.qos.ch/manual/appenders.html

4:代码测试 

保存在文件中的Log信息: 

彩蛋:控制台的颜色设置 

友情提示,你可能需要添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

项目地址: https://github.com/angcyo/LogbackDemo


Android 中Jackson的简单使用

org.slf4j:slf4j-api:添加日志管理的更多相关文章

  1. springboot搭建环境之使用@Slf4j注解方式,进行日志管理

    如果不想每次都写private  final Logger logger = LoggerFactory.getLogger(XXX.class); 可以用注解@Slf4j 需要引入依赖为: < ...

  2. springBoot添加日志管理

    一. 近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了 ...

  3. 通过aop添加日志管理

    1.使用spring 的 aop 技术切到自定义注解上,所以先创建一个自定义注解类 import java.lang.annotation.*; @Target(ElementType.METHOD) ...

  4. slf4j+logback搭建超实用的日志管理模块

    文章转自http://www.2cto.com/kf/201702/536097.html slf4j+logback搭建超实用的日志管理模块(对日志有编号管理):日志功能在服务器端再常见不过了,我们 ...

  5. [转]slf4j 与log4j 日志管理

    log4j简易入门 package test.log4j; import org.apache.log4j.Logger; public class HelloLog4j { private stat ...

  6. java日志管理 - slf4j+log4j2

    1 . 概述 1.1  日志框架实现 log4j是apache实现的一个开源日志组件: logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j ...

  7. 日志管理-log4j与slf4j的使用

    一.概述 1.log4j: Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Sy ...

  8. 日志框架(Log4J、SLF4J、Logback)--日志规范与实践

    文章目录 一.Log4j 1.1新建一个Java工程,导入Log4j包,pom文件中对应的配置代码如下: 1.2resources目录下创建log4j.properties文件. 1.3输出日志 1. ...

  9. 如何给框架添加API接口日志

    前言 用的公司的框架,是MVC框架,看了下里面的日志基类,是操作日志,对增删改进行记录, 夸张的是一张业务的数据表 需要一张专门的日志表进行记录, 就是说你写个更新,添加的方法都必须写一遍操作日志,代 ...

随机推荐

  1. macOS 10.13允许任何来源开启方法

    软件下载网站: http://www.pc6.com/ 软件安装问题: macOS 10.13允许任何来源开启方法: 如果需要恢复允许“任何来源”的选项,即关闭系统的Gatekeeper,我们可以在“ ...

  2. dll与exe

    文章:dll与exe的区别 地址:https://blog.csdn.net/qq_26591517/article/details/80389846

  3. SpringBoot -生成Entity和Dto互转的双向枚举类 -使用注解@Mapper(componentModel = "spring")

    1.导入pom文件 ,版本号自定 <!--mapStruct依赖--> <dependency> <groupId>org.mapstruct</groupI ...

  4. 《你们都是魔鬼吗》第八次团队作业:第三天Alpha冲刺

    <你们都是魔鬼吗>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 完成最 ...

  5. HDFS中的fsck命令(检查数据块是否健康)

    在HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态.获取文件的block信息和位置信息等. 我们在master机器上执行hdfs fsck就可以看到这个命令的用法. [hadoo ...

  6. 第142题:环形链表II

    一. 问题描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 ...

  7. 关于Djiango中 前端多对多字段点(,)的显示问题

    去除点的方法: <td> {% for roles_son in roles.permissions.all %} {% if forloop.last %} # 利用模板语言中的循环机制 ...

  8. mui 点击长按复制文本

    项目需要长按复制文本内容,由于也没仔细研究过 mui 所以就直接百度.看到了 花落乱了流年 这篇博客 我就把这个博客的代码融合到自己的项目里,实现了复制的需求 直接上代码 单独写到了一个 js 文件. ...

  9. mage Ansible学习3 ansible role实例

    一.ansible配置文件解析 1./etc/ansible/ansible.cfg配置文件详解 [root@node3 ~]# cat /etc/ansible/ansible.cfg |grep ...

  10. windows api多线程

    windows api多线程  原文地址:https://www.cnblogs.com/flowingwind/p/8452693.html 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行 ...