给别人提供一个jar包,可以直接打印日志,将日志采集到固定位置,现在大多数的情况都是使用的logback.xml文件,如果还用这个文件可能会造成冲突(当然可以用其他名字),为了避免还得加载文件,直接用java编写配置,如下:
public class securityloggerfactory { private static final string logpath = "/export/logs/securitylog/securitylog.log"; private static final string logpathhistory = "/export/logs/securitylog/securitylog.log.%d"; private static logger logger = null; public static logger getlogger(){ return logger; } /** * 构造logger * 设置路径 * 设置滚动方式 */ static { loggercontext loggercontext = (loggercontext) loggerfactory.getiloggerfactory(); //loggercontext.reset(); rollingfileappender<iloggingevent> rollingfileappender = new rollingfileappender<iloggingevent>(); rollingfileappender.setcontext(loggercontext); rollingfileappender.setappend(true); rollingfileappender.setname("jdsecuritylogappender"); rollingfileappender.setfile(logpath); timebasedrollingpolicy rollingpolicy = new timebasedrollingpolicy<>(); rollingpolicy.setfilenamepattern(logpathhistory); rollingpolicy.setmaxhistory(10); rollingpolicy.setcontext(loggercontext); rollingpolicy.setparent(rollingfileappender); rollingpolicy.start(); rollingfileappender.setrollingpolicy(rollingpolicy); patternlayoutencoder encoder = new patternlayoutencoder(); encoder.setpattern("%msg%n"); encoder.setcharset(charset.forname("utf-8")); encoder.setcontext(loggercontext); encoder.start(); rollingfileappender.setencoder(encoder); rollingfileappender.start(); ch.qos.logback.classic.logger rootlogger = loggercontext.getlogger("securityloglogger"); rootlogger.setlevel(level.info); rootlogger.addappender(rollingfileappender); logger = rootlogger; } public static void main(string[] args) { securityloggerfactory.getlogger().info("this is text log."); }}
客户端直接调用securityloggerfactory.getlogger().info()就能打印相关的日志了。而日志除了在控制台输出,还会输出到指定文件。
注意:
文件路径是linux路径,如果在windows执行并不能生成文件,得用windows路径,如:c:/securitylog/securitylog.log
以上就是如何使用java代码编写logback配置的详细内容。