java logging api_Java Logging API - Tutorial

1. Overview

1.1. Logging

Logging is the process of writing log messages during the execution of a program to a central place. This logging allows you to report and persist error and warning messages as well as info messages (e.g., runtime statistics) so that the messages can later be retrieved and analyzed.

The object which performs the logging in applications is typically just called Logger.

1.2. Logging in Java

Java contains the Java Logging API. This logging API allows you to configure which message types are written. Individual classes can use this logger to write messages to the configured log files.

The java.util.logging package provides the logging capabilities via the Logger class.

1.3. Create a logger

To create a logger in your Java code, you can use the following snippet.

import java.util.logging.Logger;

// assumes the current class is called logger

private final static Logger LOGGER = Logger.getLogger(MyClass.class.getName());

The Logger you create is actually a hierarchy of Loggers, and a . (dot) in the hierarchy indicates a level in the hierarchy. So if you get a Logger for the com.example key, this Logger is a child of the com Logger and the com Logger is child of the Logger for the empty String. You can configure the main logger and this affects all its children.

1.4. Level

The log levels define the severity of a message. The Level class is used to define which messages should be written to the log.

The following lists the Log Levels in descending order:

SEVERE (highest)

WARNING

INFO

CONFIG

FINE

FINER

FINEST

In addition to that you also have the levels OFF and ALL to turn the logging off or to log everything.

For example, the following code sets the logger to the info level, which means all messages with severe, warning and info will be logged.

LOGGER.setLevel(Level.INFO);

1.5. Handler

Each logger can have access to several handlers.

The handler receives the log message from the logger and exports it to a certain target.

A handler can be turned off with the setLevel(Level.OFF) method and turned on with setLevel() method.

You have several standard handlers. The following list gives some examples.

ConsoleHandler: Write the log message to console

FileHandler: Writes the log message to file

Log levels INFO and higher will be automatically written to the console.

1.6. Formatter

Each handler's output can be configured with a formatter

Available formatter

SimpleFormatter: Generate all messages as text

XMLFormatter: Generates XML output for the log messages

You can also build your own formatter. The following is an example of a formatter which will create HTML output.

package com.vogella.logger;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.Formatter;

import java.util.logging.Handler;

import java.util.logging.Level;

import java.util.logging.LogRecord;

// this custom formatter formats parts of a log record to a single line

class MyHtmlFormatter extends Formatter {

// this method is called for every log records

public String format(LogRecord rec) {

StringBuffer buf = new StringBuffer(1000);

buf.append("

\n");

// colorize any levels >= WARNING in red

if (rec.getLevel().intValue() >= Level.WARNING.intValue()) {

buf.append("\t

");

buf.append("");

buf.append(rec.getLevel());

buf.append("");

} else {

buf.append("\t

");

buf.append(rec.getLevel());

}

buf.append("

\n");

buf.append("\t

");

buf.append(calcDate(rec.getMillis()));

buf.append("

\n");

buf.append("\t

");

buf.append(formatMessage(rec));

buf.append("

\n");

buf.append("

\n");

return buf.toString();

}

private String calcDate(long millisecs) {

SimpleDateFormat date_format = new SimpleDateFormat("MMM dd,yyyy HH:mm");

Date resultdate = new Date(millisecs);

return date_format.format(resultdate);

}

// this method is called just after the handler using this

// formatter is created

public String getHead(Handler h) {

return "\n

\n\n"

+ "\n"

+ "

\n"

+ "

" + (new Date()) + "

\n"

+ "

+ "

\n"

+ "\t

Loglevel\n"

+ "\t

Time\n"

+ "\t

Log Message\n"

+ "

\n";

}

// this method is called just after the handler using this

// formatter is closed

public String getTail(Handler h) {

return "

\n\n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值