JAVA SDK自带的log输出到界面和文件 并格式化

import util.Log;

import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.util.logging.*;

public class LoggerExample {
    private static final Logger LOGGER = Logger.getLogger(LoggerExample.class.getName());
    private JTextArea logTextArea;

    public LoggerExample() {
        // 创建JFrame窗口
        JFrame frame = new JFrame("Logger Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建JTextArea
        logTextArea = new JTextArea(10, 40);
        logTextArea.setEditable(false);

        // 将JTextArea放入JScrollPane中
        JScrollPane scrollPane = new JScrollPane(logTextArea);
        frame.getContentPane().add(scrollPane, BorderLayout.CENTER);

        frame.pack();
        frame.setVisible(true);



        // 创建自定义Handler
        Handler logHandler = new TextAreaHandler();
        logHandler.setFormatter(new SimpleFormatter());

        FileHandler fileHandler = null;
        try {
            fileHandler = new FileHandler("log.log"); //同时也输出到文件
        } catch (IOException e) {
            e.printStackTrace();
        }
        fileHandler.setFormatter(new SimpleFormatter());
        LOGGER.addHandler(fileHandler);

        // 设置日志级别和Handler
        LOGGER.setLevel(Level.ALL);
        LOGGER.addHandler(logHandler);

        // 示例日志输出
        // all→finest→finer→fine→config→info→warning→server→off
        //全部的→最好的→更精细的→好的→配置→信息→警告→服务器→关
        // 级别依次升高,后面的日志级别会屏蔽之前的级别
        LOGGER.severe("Severe log message");
        LOGGER.warning("Warning log message");
        LOGGER.info("Info log message");
        LOGGER.config("Config log message");
        LOGGER.fine("Fine log message");
        LOGGER.finer("Finer log message");
        LOGGER.finest("Finest log message");
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new LoggerExample());
    }

    private class TextAreaHandler extends Handler {
        @Override
        public void publish(LogRecord record) {
            String message = getFormatter().format(record);
            SwingUtilities.invokeLater(() -> logTextArea.append(message + "\n"));
        }

        @Override
        public void flush() {}

        @Override
        public void close() throws SecurityException {}
    }
}

package util;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Log {
    public static Logger log = Logger.getLogger(Log.class.toString());

    public static void main(String[] args) {
        // 设置日志输出到文件
        try {
            FileHandler fileHandler = new FileHandler("log.log");
            log.addHandler(fileHandler);
        } catch (IOException e) {
            e.printStackTrace();
        }


        // all→finest→finer→fine→config→info→warning→server→off
        //全部的→最好的→更精细的→好的→配置→信息→警告→服务器→关
        // 级别依次升高,后面的日志级别会屏蔽之前的级别
        log.setLevel(Level.INFO);
        log.finest("finest");
        log.finer("finer");
        log.fine("fine");
        log.config("config");
        log.info("info");
        log.warning("warning");
        log.severe("server");
    }
}

格式化示例 java.util.logging.Formatter.format java code examples | Tabnine

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值