以前は、他の問題により、Java開発は長い間行われていませんでした。最近、Html5モバイルアプレットバックエンドがJavaで構築されます。
小さなプログラムであるため、モバイル端末で使用され、クライアントリクエストの処理はjsonを返すことです。当然、SSHの高貴で、メモリを消費し、複雑で、開発の遅いフレームワークを使用する必要はありません。 。
同時に、元に戻って簡単なコードを記述し、RESTfulフレームワークのプロトタイプを作成したいと思います。
もともとlog4jを使ってログシステムを構築し、最新バージョンをダウンロードして、引用パッケージが100万を超えているのを確認したかったのですが、イライラしました。ログだけではないですか?必要ですか?!私のプロジェクト全体では、jarパッケージに1兆個の独自のコードが含まれていません。
common-loggingをもう一度確認しましたが、何も実行されなかったか、他のパッケージをマウントする必要がありました。
インターネット上の情報を参考に、JDKログを自分でパッケージ化することにしました。
以下のコードを調整しましたので、よろしくお願いします!(同様のビューがある場合)
1。新しいSysLog.javaを作成し、次のコードを入力します。getLogger
2の場合、入力をフォーマットするための新しいSysLogFormatter.javaを作成します。jdkのデフォルトのログ出力には満足できないと思います。これは私がSimpleFormatterから見つけたものです。
小さなプログラムであるため、モバイル端末で使用され、クライアントリクエストの処理はjsonを返すことです。当然、SSHの高貴で、メモリを消費し、複雑で、開発の遅いフレームワークを使用する必要はありません。 。
同時に、元に戻って簡単なコードを記述し、RESTfulフレームワークのプロトタイプを作成したいと思います。
もともとlog4jを使ってログシステムを構築し、最新バージョンをダウンロードして、引用パッケージが100万を超えているのを確認したかったのですが、イライラしました。ログだけではないですか?必要ですか?!私のプロジェクト全体では、jarパッケージに1兆個の独自のコードが含まれていません。
common-loggingをもう一度確認しましたが、何も実行されなかったか、他のパッケージをマウントする必要がありました。
インターネット上の情報を参考に、JDKログを自分でパッケージ化することにしました。
以下のコードを調整しましたので、よろしくお願いします!(同様のビューがある場合)
1。新しいSysLog.javaを作成し、次のコードを入力します。getLogger
2の場合、入力をフォーマットするための新しいSysLogFormatter.javaを作成します。jdkのデフォルトのログ出力には満足できないと思います。これは私がSimpleFormatterから見つけたものです。
3.新しいlogger.propertiesを作成し、srcまたはWEB-INFディレクトリの下に配置します。出力をフォーマットし、ファイルに出力するために使用されます
SysLog.java
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class SysLog {
private static SysLog log = null;
public static SysLog instance() {
if (log == null) {
//synchronized SysLog.class
log = new SysLog();
}
return log;
}
public SysLog() {
InputStream is = null;
try {
LogManager.getLogManager().readConfiguration(SysLog.class.getClass().getResourceAsStream("/logger.properties"));
} catch (Exception e) {
System.err.println("input properties file is error.\n" + e.toString());
e.printStackTrace();
} finally {
if( is != null ) {
try {
is.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
public Logger get_loger(Class<?> clazz) {
return get_loger(clazz.getName());
}
public Logger get_loger(String clazz) {
// LogManager.getLogManager().getLogger(name)
return Logger.getLogger(clazz);
}
public static Logger getLoger(Class<?> clazz) {
return instance().get_loger(clazz);
}
public static Logger getLoger(String clazz) {
return instance().get_loger(clazz);
}
}
SysLogFormater.java
package sx.cms.util;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
/**
* this code was from copy from java.util.logging.SimpleFormatter
*/
public class SysLogFormatter extends Formatter {
//private static final String format = "%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%6$s%n";
//private static final String format = "%1$tY/%1$tb/%1$td/%1$Tp/%1$tl:%1$tM:%1$tS %2$s[%4$s]\t%5$s%6$s%n";
private static final String format = "%1$tY/%1$tm/%1$td/%1$tH:%1$tM:%1$tS %2$s[%4$s]\t%5$s%6$s%n";
private final Date dat = new Date();
public synchronized String format(LogRecord record) {
dat.setTime(record.getMillis()); String source;
if (record.getSourceClassName() != null) {
source = record.getSourceClassName();
if (record.getSourceMethodName() != null) {
source += " " + record.getSourceMethodName();
}
} else {
source = record.getLoggerName();
}
String message = formatMessage(record);
String throwable = "";
if (record.getThrown() != null) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
pw.println();
record.getThrown().printStackTrace(pw);
pw.close();
throwable = sw.toString();
}
return String.format(format,
dat,
source,
record.getLoggerName(),
//record.getLevel().getLocalizedLevelName(),
record.getLevel().getName(),
message,
throwable);
}
}
logger.properties
handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandler
java.util.logging.ConsoleHandler.formatter = project.your.SysLogFormatter
java.util.logging.ConsoleHandler.level = CONFIG
# Level.INFO
#log out file
java.util.logging.FileHandler.pattern = my.log%g.log
java.util.logging.FileHandler.formatter = sx.cms.util.SysLogFormatter
java.util.logging.FileHandler.limit = 104857600
java.util.logging.FileHandler.count = 3
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.level = INFO
LOGGER.level = WARNING
テストと使用
//测试和使用
public static void main(String[] args) {
Logger log = SysLog.getLoger(Main.class);
log.info("log 中国" + System.currentTimeMillis());
}