这两天学习java logger 在网上找了一些资料与大家一起分享。
看几个程序实例:
java输出日志到文件或在控制台上显示 是根据\jre\lib目录下的配置文件logging.properties【当然你也可以定义自己的配置文件】和程序里的设置决定的。
LevelTest.java 最简单的日志输出到控制台:
package logger;
import java.util.logging.Logger;
public class LevelTest
{
private static String >private static Logger log = Logger.getLogger(name);
public void sub() {
log.severe("level.severe");
log.warning("level.warning");
log.info("level.info");
log.config("level.config");
log.fine("level.fine");
log.finer("level.finer");
log.finest("level.finest");
}
public static void main(String[] args)
{
LevelTest test = new LevelTest();
test.sub();
}
}
LoggingExample.java 输出到控制台和文件:
package logger;
import java.util.logging.*;
public class LoggingExample
{
public static void main(String[] args)
{
try{
LogManager lm = LogManager.getLogManager();
Logger logger = Logger.getLogger("LoggingExample");
FileHandler fh = new FileHandler("E://workspace//javacore//logger//log_test.txt");
lm.addLogger(logger);
logger.setLevel(Level.INFO);
fh.setFormatter( new SimpleFormatter() );
logger.addHandler( fh );
logger.log( Level.INFO,"test1");
logger.log( Level.INFO,"test2");
logger.log( Level.INFO,"test3");
logger.severe("severe level");
logger.warning("warning level");
logger.info("info level");
logger.config("config level");
logger.fine("fine level");
logger.finer("finer level");
logger.finest("finest level");
fh.close();
}catch(Exception e)
{
System.out.println("Exception thrown: "+e );
e.printStackTrace();
}
}
}
最后是将日志信息输出到网络主机:
LogTest .java 客户端
package logger;
import java.io.*;
import java.util.logging.*;
public class LogTest {
private static Logger logger =
Logger.getAnonymousLogger();
public static void main(String argv[]) throws IOException
{//把localhost换成目的主机的ip
Handler handler = new SocketHandler("localhost", 8099);
logger.addHandler(handler);
logger.log(Level.SEVERE, "Hello, World");
logger.log(Level.INFO, "欢迎您的到来");
}
}
LogServer .java服务器端
package logger;
public class LogServer {
private static final int PORT_NUM = 8099;
public static void main(String args[]) {
ServerSocketFactory serverSocketFactory =
ServerSocketFactory.getDefault();
ServerSocket serverSocket = null;
try {
serverSocket =
serverSocketFactory.createServerSocket(PORT_NUM);
} catch (IOException ignored) {
System.err.println("无法创建服务");
System.exit(-1);
}
System.out.printf("LogServer 运行端口: %s%n", PORT_NUM);
while (true)
{
Socket socket = null;
try {
socket = serverSocket.accept();
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(
new InputStreamReader(is, "GBK"));
String line = null;
while ((line = br.readLine()) != null
) {
System.out.println(line);
}
} catch (IOException exception) {
// 处理下在个请求.
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException ignored) {
}
}
}
}
}
}
相关类的用法以及相关属性的含义可以查阅logging.properties里的文档说明和jdk5.0 API.