精华内容
下载资源
问答
  • JAVA中自定义日志输出到指定文件
    千次阅读
    2021-02-12 16:07:52

    packagecom.bsk.log;importjava.io.BufferedOutputStream;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.OutputStream;importjava.text.ParsePosition;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.LinkedList;importjava.util.logging.Level;importjava.util.logging.LogRecord;importjava.util.logging.Logger;importjava.util.logging.StreamHandler;public class CustomFileStreamHandler extendsStreamHandler{//输出流

    privateMeteredStream msOut;//日志玩家的写入的字节数, limit 为0 表示没有限制

    private int limit = 50000;//是否添加的玩家末尾

    private booleanappend;//保存存在的日志文件

    private LinkedListfiles;//希望写入的日志文件

    privateFile file;//希望写入的日志路径

    privateString fileUrl;//希望写入的当天日志路径

    privateString fileUrlDay;//保存几天之内的日志文件

    private int dateInter = 1;//索引文件,用于记录当前日志记录信息,请不要认为的修改

    privateFile indexFile;/*** 初始化自定义文件流处理器

    *@paramfileUrl 文件路径, 可以是个目录或希望的日志名称,如果是个目录则日志为“未命名”

    * 指定日志名称时不需要包括日期,程序会自动生成日志文件的生成日期及相应的编号

    *@paramlimit 每个日志希望写入的最大字节数,如果日志达到最大字节数则当天日期的一个新的编 号的日志文件将被创建,最新的日志记录在最大编号的文件中

    *@paramdateInter 事务保存的日期间隔

    *@paramappend 是否将日志写入已存在的日志文件中

    *@throwsjava.lang.Exception*/

    public CustomFileStreamHandler(String fileUrl, int limit, int dateInter, boolean append) throwsException {super();this.fileUrl =fileUrl;if (dateInter <= 0) {throw new IllegalArgumentException("时间间隔必须大于0");

    }if (limit < 0) {throw new IllegalArgumentException("写入日志文件的最大字节数必须大于0");

    }this.limit =limit;this.dateInter =dateInter;this.append =append;

    openWriteFiles();

    }public CustomFileStreamHandler(String fileUrl, boolean append) throwsException {super();this.fileUrl =fileUrl;this.append =append;

    openWriteFiles();

    }/*** 获得将要写入的文件*/

    private synchronized void openWriteFiles() throwsException {if (fileUrl == null) {throw new IllegalArgumentException("文件路径不能为null");

    }//files = getWritedLog();//checkLogFile();

    getWriteFile();if(append) {//openFile(files.getLast(), append);

    openFile(file, append);

    }else{

    getLastFile();

    }

    }private void getWriteFile()throwsException{

    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

    String trace= sdf.format(newDate().getTime());

    fileUrlDay= fileUrl+"_"+trace+".log";

    file= newFile(fileUrlDay);if (!file.exists()) {

    file.createNewFile();

    }

    }/*** 打开需要写入的文件

    *@paramfile 需要打开的文件

    *@paramappend 是否将内容添加到文件末尾*/

    private void openFile(File file, boolean append) throwsException {//System.out.println("***opend = true " + file.toString());

    int len = 0;if(append) {

    len= (int) file.length();

    }

    FileOutputStream fout= newFileOutputStream(file.toString(), append);

    BufferedOutputStream bout= newBufferedOutputStream(fout);

    msOut= newMeteredStream(bout, len);

    setOutputStream(msOut);

    }/*** 将离现在最近的文件作为写入文件的文件

    * 例如 D:logmylog_30_2008-02-19.log

    * mylog表示自定义的日志文件名,2008-02-19表示日志文件的生成日期,30 表示此日期的第30个日志文件*/

    private voidgetLastFile() {try{super.close();

    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

    String trace= sdf.format(newDate().getTime());int maxLogCount = 0; //获得当前最大的日志文件编号//System.out.println("********共有文件**********");

    for(File file : files) {//System.out.println(file.toString());

    String fileName =file.toString();//获得相同同日期日志文件的最大编号

    if (fileName.indexOf(trace) != -1) {int last = fileName.lastIndexOf('_');int beforeLast = fileName.lastIndexOf('_', last - 1);

    maxLogCount= Integer.valueOf(fileName.substring(beforeLast + 1, last));

    }

    }//System.out.println("********");//System.out.println("maxLogCount == " + maxLogCount);

    File file = newFile(fileUrl);

    String logIndex= (maxLogCount + 1) + "_" +trace;if (file.isDirectory()) { //是个目录

    files.add(new File(fileUrl + File.separator + "未命名_" + logIndex + ".log"));

    }else{

    files.add(new File(fileUrl + "_" + logIndex + ".log"));

    }

    writeLogIndex(logIndex,true);

    openFile(files.getLast(),false);

    }catch(Exception ex) {

    Logger.getLogger(CustomFileStreamHandler.class.getName()).log(Level.SEVERE, null, ex);

    }

    }/*** 读取已经记录的日志的时间信息*/

    private LinkedListgetWritedLog() {

    LinkedList fileList = new LinkedList();

    BufferedReader br= null;try{

    File file= newFile(fileUrl);if (fileUrl.endsWith("/") || fileUrl.endsWith("/")) { //是个目录

    if (!file.exists()) {

    file.mkdirs();

    }

    }if (file.isDirectory()) { //只有指定file存在且是个目录

    indexFile = new File(file.toString() + File.separator + "logindex");

    }else{

    indexFile= new File(file.getParent() + File.separator + "logindex");

    }if (!indexFile.exists()) {

    indexFile.createNewFile();

    }

    FileReader fr= null;

    fr= newFileReader(indexFile);

    br= newBufferedReader(fr);

    String line= null;while ((line = br.readLine()) != null) {if (line.trim().length() != 0) {if (file.isDirectory()) { //是个目录

    fileList.add(new File(fileUrl + File.separator + "未命名" + "_" + line + ".log"));

    }else{

    fileList.add(new File(fileUrl + "_" + line + ".log"));

    }

    System.out.println("line == " +line);

    }

    }returnfileList;

    }catch(Exception ex) {

    Logger.getLogger(CustomFileStreamHandler.class.getName()).log(Level.SEVERE, null, ex);

    }finally{try{

    br.close();

    }catch(IOException ex) {

    Logger.getLogger(CustomFileStreamHandler.class.getName()).log(Level.SEVERE, null, ex);

    }

    }return null;

    }/*** 写入日志索引

    *@paramlogIndex 日志所以

    *@paramisAppend 是否添加到索引文件中*/

    private void writeLogIndex(String logIndex, booleanisAppend) {

    File file= newFile(fileUrl);

    BufferedWriter bw= null;try{

    FileWriter fw= null;if (file.isDirectory()) { //是个目录//是个目录

    fw = new FileWriter(new File(file.toString() + File.separator + "logindex"), isAppend);

    }else{

    fw= new FileWriter(new File(file.getParent() + File.separator + "logindex"), isAppend);

    }

    bw= newBufferedWriter(fw);

    bw.newLine();

    bw.write(logIndex,0, logIndex.length());

    bw.flush();

    }catch(Exception ex) {

    Logger.getLogger(CustomFileStreamHandler.class.getName()).log(Level.SEVERE, null, ex);

    }finally{try{

    bw.close();

    }catch(IOException ex) {

    Logger.getLogger(CustomFileStreamHandler.class.getName()).log(Level.SEVERE, null, ex);

    }

    }

    }/*** 检查当前日志时间

    * 删除过期日志,并检查日志索引中是否包含了现在日期*/

    private voidcheckLogFile() {try{

    SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

    String trace= sdf.format(newDate().getTime());boolean isIncludeNow = false;

    LinkedList overdueLog = new LinkedList(); //过期的日志文件

    long nowDate =sdf.parse(trace).getTime();for(File file : files) {if (file.toString().indexOf(trace) != -1) {

    isIncludeNow= true;

    }if ((nowDate - sdf.parse(file.toString(), new ParsePosition(file.toString().lastIndexOf('_') + 1)).getTime()) / (86400 * 1000) > 5) {

    overdueLog.add(file);//System.err.println("将被删除的日志为 " + file);

    }

    }//删除过期日志记录, 并重写日志索引文件

    if (overdueLog.size() != 0) {

    files.removeAll(overdueLog);

    indexFile.delete();

    indexFile.createNewFile();

    String fileStr= null;for(File file : files) {

    fileStr=file.toString();

    writeLogIndex(fileStr.substring(fileStr.lastIndexOf('_') - 1, fileStr.lastIndexOf('.')), true);

    }//删除过期文件

    for(File file : overdueLog) {

    file.delete();

    }

    }//如果没有包含当天的日期同时日志需要添加到文件末尾,则添加当天日期的日志文件

    if (!isIncludeNow &&append) {

    File file= newFile(fileUrl);

    String logIndex= 1 + "_" +trace;if(file.isDirectory()) {//是个目录

    files.add(new File(fileUrl + File.separator + "未命名_" + logIndex + ".log"));

    }else{

    files.add(new File(fileUrl + "_" + logIndex + ".log"));

    }

    writeLogIndex(logIndex,true);

    }

    }catch(Exception ex) {

    Logger.getLogger(CustomFileStreamHandler.class.getName()).log(Level.SEVERE, null, ex);

    }

    }/*** 发布日志信息*/@Overridepublic synchronized voidpublish(LogRecord record) {super.publish(record);super.flush();if (limit > 0 && msOut.written >=limit) {

    getLastFile();

    }

    }/*** 抄自FileHandler的实现,用于跟踪写入文件的字节数

    * 这样以便提高效率*/

    private class MeteredStream extendsOutputStream {privateOutputStream out;//记录当前写入字节数

    private intwritten;

    MeteredStream(OutputStream out,intwritten) {this.out =out;this.written =written;

    }public void write(int b) throwsIOException {

    out.write(b);

    written++;

    }

    @Overridepublic void write(byte buff[]) throwsIOException {

    out.write(buff);

    written+=buff.length;

    }

    @Overridepublic void write(byte buff[], int off, int len) throwsIOException {

    out.write(buff, off, len);

    written+=len;

    }

    @Overridepublic void flush() throwsIOException {

    out.flush();

    }

    @Overridepublic void close() throwsIOException {

    out.close();

    }

    }

    }

    更多相关内容
  • 打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志输出路径,下面看一个示例吧
  • java开发日志打印

    2017-11-23 17:21:44
    日志打印日志打印日志打印日志打印日志打印日志打印日志打印日志打印
  • java 输出日志到指定文件中

    千次阅读 2018-10-28 21:38:08
    1.在我们项目开发中经常要将项目的异常日志输出到制定看路径的文件中 ,下面用java 实现日志输出功能 。直接上代码如下 所示: /**  *   * @author Administrator 控制台日志输出到 文件中去  *  */ public ...

    1.在我们项目开发中经常要将项目的异常日志输出到制定看路径的文件中 ,下面用java 实现日志输出功能 。直接上代码如下 所示:
    /**
     * 
     * @author Administrator 控制台日志输出到 文件中去
     *
     */

    public class Testprint {

      /**
       * 
       * @param args   main  方法测试
       * @throws IOException
       */

    public static void main(String[] args) throws IOException {

    String content = null;
            String url = "e:/exception.txt";
            try {
                List<String> list = new ArrayList<>();
                list.add("1");
                list.add("2");
                list.add("3");
                for (String string : list) {
                    System.out.println(string);

                }
                while (true) {
                    String j = list.get(3);

                }

            } catch (Exception e) {

                content = e.getClass().getName() + "error  info " + e.getMessage();
            }

            Testprint testprint = new Testprint();

            testprint.setEception(url, content);
     

    }

      /**
       * 
       * 
       * @param url     指定文件的位置
       * @param content    异常输出的内容 
       * @throws IOException
       */

    private void setEception(String url, String content) throws IOException {
            File file = new File(url);
            FileWriter fw = null;
            if (!file.exists()) {

                file.createNewFile();
            }
            String writeDate = "当前时间:" + this.getTime() + "-------" + "error"
                    + content;
            try {
                fw = new FileWriter(file, true);
                fw.write(writeDate + "\r\n");

            } catch (IOException e) {
                e.printStackTrace();

            } finally {
                if (fw != null) {
                    fw.close();

                }
            }

        }

    /**
        *  @description    输出当前时间
        * @return
        */
        private String getTime() {

            Calendar cal = Calendar.getInstance();
            int day = 0;
            int month = 0;
            int year = 0;
            year = cal.get(Calendar.YEAR);
            month = cal.get(Calendar.MONTH) + 1;
            day = cal.get(Calendar.DAY_OF_MONTH);
            String nowDate = String.valueOf(year) + "-" + String.valueOf(month)
                    + "-" + String.valueOf(day);
            return nowDate;
        }

    2.运行的结果 如下所示

    1
    2
    3
    异常输出 到控制台 :  Index: 3, Size: 3;

    }

    展开全文
  • 浅谈java日志格式化

    2020-08-26 00:26:42
    不管我们使用何种语言开发,一旦程序发生异常,日志是一个很重要的数据。但是并不是意味着打印的日志越多越好,我们需要的是有用的日志。下面小编来和大家一起学习以下知识
  • 主要给大家介绍了关于Java实时监控日志文件并输出的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
  • java Log日志规范

    2019-04-26 01:10:10
    NULL 博文链接:https://asen0713.iteye.com/blog/2356662
  • java日志 配置文件

    2017-12-25 09:46:40
    java日志 配置文件 包含配置文件各个参数的定义及参数含义
  • Java日志打印方法

    千次阅读 2021-02-12 09:29:48
    一、使用log4j打印日志1. 下载log4j.jar和commons-logging.jar。2.将准备好的两个jar包放到项目的lib包中(添加到项目的build path中)。方法:右键单击项目→选择“属性”→JavaBuild Path→Add External JARs。3.在...

    一、使用log4j打印日志

    1. 下载log4j.jar和commons-logging.jar。

    2.将准备好的两个jar包放到项目的lib 包中(添加到项目的build path中)。方法:右键单击项目→选择“属性”→Java Build Path→Add External JARs。

    3.在src路径下创建一个log4j.properties文件。创建方法:右键单击src→New→File,输入文件名。

    296a8144bdae79e9770b484582fa0fd9.gif

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

    a278ab523b9d6255ef0934d5671ba495.gif

    对配置信息进行解释:

    这里指定了日志输出的级别 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","打印内容");

    展开全文
  • 目前该配置可以输出>=INFO级别的日志信息,如何设置可以显示>=DEBUG的日志信息呢?求教?一、log4j.xml二、测试代码package com.zhoujie;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public ...

    目前该配置可以输出>=INFO级别的日志信息,如何设置可以显示>=DEBUG的日志信息呢?求教?

    一、log4j.xml

    二、测试代码

    package com.zhoujie;

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

    public class Log {

    //public static LoggerFactory factory = new LoggerFactory(Log.class);

    //private static Logger logger = LoggerFactory.getLogger(Log.class);

    public static Logger logger = LoggerFactory.getLogger(Log.class);

    public static void main(String[] args) {

    //输出>=INFO级别的消息

    logger.info("Hello World");

    logger.debug("Hello Java");

    logger.warn("Hello Game");

    logger.info("你好!禹尧");

    }

    }

    三、控制台输出

    2018-11-14 16:46:39 INFO com.zhoujie.Log - Hello World

    2018-11-14 16:46:39 WARN com.zhoujie.Log - Hello Game

    2018-11-14 16:46:39 INFO com.zhoujie.Log - 你好!禹尧

    四、文件输出

    51d2332a12dd4084de70120a854782bc.png

    展开全文
  • Java中打印输出日志文件

    千次阅读 2021-02-12 09:30:01
    importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileDescriptor;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava...
  • import java.io.FileNotFoundException; import java.io.PrintStream; public class RedirectOutputStream { public static void main(String[]args){ try{ PrintStream out = System.out; **PrintStream ps =...
  • 主要介绍了java异步写日志到文件中实现代码的相关资料,需要的朋友可以参考下
  • Java获取控制台输出日志的方法

    万次阅读 2019-05-14 11:18:21
    Java输出日志到控制台主要是靠PrintStream来完成,如: System.out 的源码就是个PrintStream 因此,想要截取控制台需要自己来接替PrintStream的部分工作。 二、替换输出流 首先,我们需要一个...
  • 1. 新增配置文件输出日志文件 在项目的resources目录下,新建logback.xml文件, 在文件中添加一下配置 <!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL --> <!-- 日志...
  • java调用kettle日志输出

    2021-03-08 16:22:07
    java调用kettle日志输出[2021-02-07 08:20:36]简介:输出php错误日志的解决办法:1、修改【php-fpm.conf】中配置,没有则增加;2、修改【php.ini】中配置,没有则增加;3、重启【php-fpm】。输出php错误日志的解决...
  • 主要介绍了java启动jar包将日志打印到文本的简单操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • java打印日志的几种方式

    千次阅读 2021-01-25 11:06:33
    一、简单介绍五种 最简单的方式,就是system.println.out(error) ,这样直接在控制台打印消息了; Java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中写日志了;...logback是java日志开源组件
  • java springboot输出日志到本地文件 把logback-spring.xml文件放入springboot项目的resources目录中和application配置文件同级即可 再把这句话放到需要打印的类中 private static final Logger logger = ...
  • Java日志输出有关问题

    2021-04-18 01:06:52
    Java日志输出问题在使用java.util.logger的时候,我遇到了一个奇怪的问题,在JavaAPI文档中指出,Logger.setLevel(..)Settheloglevelspecifyingwhichmessagelevelswillbeloggedbythislogger....
  • 日志工具类-java实现

    2019-12-16 09:52:41
    开发项目经常需要日志模块打印输出,因此封装一个日志内,供自己平时使用,有些模块重复书写浪费时间,所以直接拉下来能快速一点。
  • Java 如何正确地输出日志

    千次阅读 2018-09-12 02:03:33
    我们 Java 程序员在开发项目时都是依赖 Eclipse/ Idea 等开发工具的 Debug 调试功能来跟踪解决 Bug,在开发环境可以这么做,但项目发布到了测试、生产环境呢?你有可能会说可以使用远程调试,但实际并不能允许让你...
  • Java日志指南

    2021-01-20 03:38:12
     Java使用了一种自定义的、可扩展的方法来输出日志。虽然Java通过java.util.logging包提供了一套基本的日志处理API,但你可以很轻松的使用一种或者多种其它日志解决方案。这些解决方案尽管使用不同的方法来创建...
  • java 打印日志乱码

    千次阅读 2020-01-13 14:21:41
    修改 JVM 参数 -Dfile.encoding=UTF-8
  • 本文主要介绍Java日志输出格式,在开发java的时候会经常看日志进行调试或者查看错误,这里给大家介绍日志输出调整格式,以便大家看日志的时候更加方便,
  • log4j 是apache 提供的记录日志的。 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 除了...
  • Java日志

    千次阅读 2021-02-12 17:02:39
    日志对于一个系统来说非常重要,查找异常信息、分析系统运行情况等都需要用到...JDK的java.util.logging包第三方日志工具(commons-logging/slf4j,log4j/logback)JDK的java.util.logging包JDK1.4引入了java.util....
  • java - 把日志生成到指定目录

    千次阅读 2021-02-26 08:21:52
    1.按天小时生成日志文件log4j.appender.ruiming.DatePattern='_'yyyy-MM-dd-HH2.最大日志文件数据log4j.appender.ruiming....4.java 和配置文件中的代码 5.完整的log4j.properties 文件### 设置 ###log4j.roo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 430,887
精华内容 172,354
关键字:

java输出日志

java 订阅