通過代碼配置logback

import java.nio.charset.Charset;

import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.ConsoleAppender;
import ch.qos.logback.core.FileAppender;


/**
 * Hello world!1
 *
 */
public class MainApp
{
    public static void main( String[] args )
    {
    	Logger logger=MyLoggerFactory.getLogger();
    	logger.info("this is text log.");
        
    }
}
class MyLoggerFactory{

    private static Logger logger = null;
    public static Logger getLogger() {
    	return logger;
    }
	//在類加載時執行,保證執行一遍,不在執行,保證單實例。
	 static {
	      LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
	      FileAppender<ILoggingEvent> fa=new FileAppender<ILoggingEvent>();
	      fa.setContext(loggerContext);
	      fa.setAppend(true);
	      fa.setName("FILE");
	      String s=System.getProperty("user.dir")+"\\log.txt";
	      fa.setFile(s);
	      ConsoleAppender<ILoggingEvent> ca=new ConsoleAppender<ILoggingEvent>();
	      ca.setName("CONSOLE");
	      //內容配置
	      PatternLayoutEncoder encoder = new PatternLayoutEncoder();
	      encoder.setPattern("%msg");
	      encoder.setCharset(Charset.forName("UTF-8"));
	      encoder.setContext(loggerContext);
	      encoder.start();
	      /////////////////////////////////
	      fa.setEncoder(encoder);
	      ca.setEncoder(encoder);
	      fa.start();
	      ca.start();

	      ch.qos.logback.classic.Logger rootLogger = loggerContext.getLogger("rootLogLogger");
	      rootLogger.setLevel(Level.INFO);
	      rootLogger.addAppender(ca);
	      rootLogger.addAppender(fa);
	      rootLogger.setAdditive(false);
	      logger = rootLogger;
	  }
   
}

通過以上代碼,就可以實現在命令行與文件同時輸出信息,並且輸出目錄爲當前文件夾

如果沒打包之前,那麼是項目根目錄

如果打包後,是運行程序所在的目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章