一、使用log4j打印日志

1. 下载log4j.jar和commons-logging.jar。
    commons-logging.jar下载地址:https://download.csdn.net/download/zuihongyan518/10597130
2.将准备好的两个jar包放到项目的lib 包中(添加到项目的build path中)。方法:右键单击项目→选择“属性”→Java Build Path→Add External JARs。
3.在src路径下创建一个log4j.properties文件。创建方法:右键单击src→New→File,输入文件名。

4. 在log4j.properties文件中添加以下配置内容:

对配置信息进行解释

这里指定了日志输出的级别 INFO. 你也可以指定BEBUG、ERROR、 WARN,或者全部指定用CONSOLE

stdout, logfile 指定日志输出的目的地。 这两个名字可以随便取,比如 A, 或B都可以。 实际的配置是 org.apache.log4j.ConsoleAppender 和RollingFileAppender 用于指定是控制台还是文件。

另外还指定了输出的格式, 已经产生的file 的规则。

log日志文件输出路径可以改,我写的是E:/logfile.log。

1. rootLogger后面跟着输出日志的级别:

1.1  ERROR 为严重错误 主要是程序的错误

1.2  WARN 为一般警告,比如session丢失

1.3  INFO 为一般要显示的信息,比如登录登出

1.4  DEBUG 为程序的调试信息

stdout, logfile 指定日志输出的目的地。 这两个名字可以随便取,比如 A, 或B都可以。

2. appender.moder1定义的是Log输出的地方:

2.1 org.apache.log4j.ConsoleAppender(控制台)

2.2 org.apache.log4j.FileAppender(文件)

2.3 org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

2.4 org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

2.5 org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

3. appender.moder1.Layout定义的是日志信息的格式:

3.1 org.apache.log4j.HTMLLayout(以HTML表格形式布局),

3.2 org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

3.3 org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

3.4 org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

4. 在appender.moder1.Layout下定义的是PatternLayout才有log4j.appender.moder1.layout.ConversionPattern

该属性自定义日志输出格式

-X号: X信息输出时左对齐;

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd       HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。 举例:Testlog4.main (TestLog4.

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%%: 输出一个"%"字符

%F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行。

5. Threshold是个全局的过滤器,它将把低于所设置的level的信息过滤不显示出来。

代码中使用

1. 代码中使用的包:  import org.apache.log4j.Logger;
2. 定义使用log:private Logger log=Logger.getLogger(当前类名.class);
3. 输出:
    log.info("this is info:"+s);
    log.error("this is error:"+s);
    log.debug("this is debug:"+s);
 
二、AppendContentToFile追加写入日志
1. 在项目中新建一个类,类名:AppendContentToFile。内容如下:
import java.io.RandomAccessFile;
public class AppendContentToFile {
// 追加写入
public static void Awrite(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.write((content+"\r\n").getBytes());
//randomFile.write(content.getBytes());
//System.out.println(new String(randomFile.readLine().getBytes("ISO-8859-1"), "utf-8"));// 需要重新转码才能正常显示
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 调用
   AppendContentToFile.Awrite("E:\\log.txt","打印内容");

Java日志打印方法的更多相关文章

  1. Java日志管理方法(转载)

    原文地址:http://www.cnblogs.com/leocook/p/log_java.html java开发中常见的几种日志管理方案有以下4种: 1. Commons-logging + lo ...

  2. 4种Java日志管理方法

    java开发中常见的几种日志管理方案有以下4种: 1. Commons-logging + log4j 2. log4j 3. slf4j + log4j + commmons-logging 4. ...

  3. java日志打印使用指南

    一.简介 日志打印是java代码开发中不可缺少的重要一步. 日志可以排查问题,可以搜集数据 二.常用日志框架 比较常用的日志框架就是logback, 一些老项目会使用log4j,他们用的都是slf4j ...

  4. Xcode最好用的日志打印方法

    一般打印日志都是用的系统自带的NSLog来打印的,假如项目做完了,要上线了,这些打印的日志就会很浪费性能,网上有很多的解决办法,我也是感觉网上的还是有点不方便,所以就自己又修改了一下,分享给大家. 网 ...

  5. TP5日志打印方法封装

    需求:在开发及测试过程中需要打印日志,并且可以将日志内容打印到指定文件,这样方便查看. 过程: 1. 打开think\Log文件,在该文件中添加一个静态方法,代码如下: /** * @param $m ...

  6. java日志框架系列(2):logback框架详解

    1.logback介绍 1.什么是logback Logback 为取代 log4j 而生. Logback 由 log4j 的创立者 Ceki Gülcü设计.以十多年设计工业级记录系统的经验为基础 ...

  7. myeclipse中控制台日志比实际晚8小时解决方法及java日志处理

    今天终于忍不住要解决myeclipse控制台中日志显示比实际晚8小时的问题,开始以为myeclipse编辑器时间问题,后来想想不对,myeclipse控制台打印的是tomcat的日志,随后以为是log ...

  8. Java编码常见的Log日志打印问题

    前言 本文总结了作者在Java代码检视中遇到的一些关于日志打印的问题,并给出修改建议.因能力有限,难免存在错漏,欢迎指正. 一. 不规范的异常打印 使用slf4j日志组件时,logger.error( ...

  9. Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件

    Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out ...

随机推荐

  1. Shell执行脚本

    Shell作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行这一条,这种方式称为交互式,但还有另一种执行命令的方式称为批处理方式,用户事先写一个Shell脚本,Shell可以一次把这些命 ...

  2. configprase模块,配置文件模块

    import configparser # config = configparser.ConfigParser() # config["DEFAULT"] = {'Port':3 ...

  3. vue中limitBy,filterBy,orderBy的用法

    1.limitBy的用法 <body> <div id="box"> <ul> <li v-for="val in arr | ...

  4. C# CancellationTokenSource.Cancel 取消线程很鸡肋?

    例子: CancellationTokenSource cts ; void MainWindow_Loaded(object sender, RoutedEventArgs e) { Task.Ru ...

  5. 解决打开AS多次提示Untrusted Server's certificate问题

    解决方法如下: 打开Studio左上角的file—>Setting-->Tools-->Server Certificates ->最后勾上 Accept non-truste ...

  6. 写10个简单的 linux 命令?

    mkdir 创建文件夹rmdir 删除文件夹rm 删除文件 mv 移动文件cp 拷贝文件cat 查看文件 tail 查看文件尾部more 分页查看文件cd 切换当前目录 ls 列出文件清单reboot ...

  7. Linux 的路由功能

    目录 文章目录 目录 前文列表 路由器 Router 路由 Routing 静态路由与动态路由 通过路由实现的全网通信示例 Linux 作为路由器 route 指令 路由表项的类型 ip route ...

  8. apache通过rewrite限制某个目录

    1.<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_URI} ^.*/tmp/* [NC] RewriteRule ...

  9. Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default

    背景说明 执行<Elasticsearch 权威指南>的示例,在执行聚合查询的时候,报错 Fielddata is disabled on text fields by default. ...

  10. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...