当前位置: 首页 > 后端技术 > Java

JAVA日志系统

时间:2023-04-01 22:52:06 Java

今天说说java的日志级别,非log4j/slf4j日志级别说明OFF不打印任何SEVERE严重错误WARNING潜在问题警告INFO通用信息CONFIG配置信息,比如cpu信息,多少内存等FINE普通开发者信息FINER详细深入的开发者信息FINEST专业开发者信息ALL最低级别所有打印日志级别PrintstaticLoggerlogger=LogManager.getLogManager().getLogger(Logger.GLOBAL_LOGGER_NAME);publicstaticvoidmain(String[]args){//LogManagerlogManager=LogManager.getLogManager();//Loggerlogger=logManager.getLogger(Logger.GLOBAL_LOGGER_NAME);logger.log(Level.INFO,"我的第一条日志");logger.log(Level.INFO,"另一条消息");测试水平();logger.severe(“哦不!”);logger.info("只是信息");logger.fine("HeDeveloperdud");publicstaticvoidtestLevel(){logger.setLevel(Level.INFO);logger.log(Level.SEVERE,"哦不!");logger.log(Level.INFO,"只是信息");logger.log(Level.FINE,"HeDeveloperdud");logger.log(Level.FINEST,"专业开发人员");}2020年3月2日11:49:09下午com.example.demo.pluralsight.log.LogTest主要消息:我的第一个日志2020年3月2日11:49:09下午com.example.demo.pluralsight.log.LogTest主要消息:另一条消息2020年3月2日11:49:09PMcom.example.demo.pluralsight.log.LogTesttestLevel严重:哦不!2020年3月2日晚上11:49:09com.example.demo.pluralsight.log.LogTest测试级别信息:只是信息2020年3月2日晚上11:49:09com.example.demo.pluralsight.log.LogTest主要严重:不好了!March02,202011:49:09pmcom.example.demo.pluralsight.log.LogTest主要信息:只需打印infologp方法即可自定义类名和方法logger.logp(Level.INFO,"com.example.demo.pluralsight.log.LogTest1","main1","logpinfo");2020年3月2日晚上11:52:15com.example.demo.pluralsight.log.LogTest1main1信息:logp信息自定义处理程序处理程序h=新控制台处理程序();Formatterf=newSimpleFormatter();h.setFormatter(f);记录器。addHandler(h);logger.setLevel(Level.INFO);logger.log(Level.INFO,"We'relogging");2020年3月4日上午12:26:10com.example.demo.pluralsight.log.LogTesthandlerLogger信息:我们正在记录3月4日,202012:26:10amcom.example.demo.pluralsight.log.LogTesthandlerLogger信息:我们正在记录普通日志输出的handler:ConsoleHandler,在执行命令行窗口写入System.err并输出到StreamHandler,输出到OutputStream在SocketHandler中,输出到指定主机名和端口号的套接字。FileHandler,可以输出到单个文件,也可以输出到滚动文件集(根据指定的大小、文件数等滚动输出)。其中,FileHandler的Pattern标识符描述/表示路径,在Windows下为\,例如写为文件。/foo.log%t表示系统的任意临时目录,%t/foo.log代表/var/tmp/foo.log或者C:\Users\Xuesong.bu\AppData\Local\Temp\foo.log%h用户家目录,%h/foo.log代表/var/users/Xueosng.bu/foo.log或C:\Users\Xuesong.Bu\foo.log%g循环写入的文件。foo_%g.log表示满了先写入foo_0.log,再写入foo_1.log,再写入foo_2.log,然后清空foo_0.log,重新写入foo_0.log,依次写入滚动输出日志publicstaticvoidfileHandlerTest()throwsException{FileHandlerh=newFileHandler("%h/myapp_%g.log",1000,4);h.setFormatter(newSimpleFormatter());记录器.addHandler(h);诠释我=0;while(i<10000){logger.log(Level.INFO,"===============");我++;}}logXMLFormatter的两个Formatters:以根元素格式化XML,每个条目位于record节点下SimpleFormatter:格式化简单文本,可以按照标准字符串的表示法进行格式化。下面是一个标准日志格式化输出的内容,其中5$表示Format中的消息,2$表示source(class&method)String.Format(format,date,source,logger,level,message,thrown);通过java命令java-Djava.util.logging.SimpleFormatter.format=%5$s,%2$s,%4$s%ncom.example.demo.pluralsight.log.Main输出日志Thisismessage,com.example.demo.pluralsight.log.LogTestMain,INFO或者直接修改日志默认配置文件,这里Handler可以分级,parent级别和child级别分别输出,log.properties设置了两个handler,com.pluralsight和com.pluralsight.Main,一个是FileHandler,一个是ConsoleHandler,和类的包级别一样,com.plurasight是com.pluralsight.Main父级别handlerlog.propertiesjava.util.logging.ConsoleHandler.level=INFOjava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormattercom.pluralsight.handlers=java.util.logging.ConsoleHandlercom。pluralsight.level=INFOjava.util.logging.SimpleFormatter.format=%5$s,%2$s,%4$s%njava.util.logging.FileHandler.level=ALLjava.util.logging.FileHandler.pattern=。/main_%g.logcom.pluralsight.Main.handlers=java.util.logging.FileHandlercom.pluralsight.Main.level=所有通过下面的java-D来执行Main类,并输出如下结果publicclassMain{publicstaticvoidmain(String[]args){记录器loggerParent=Logger.getLogger("com.pluralsight");记录器记录器=Logger.getLogger("com.pluralsight.Main");logger.log(Level.INFO,"我们正在记录");logger.log(Level.FINE,"我们记录的很好");}}java-Djava.util.logging.config.file=log.propertiescom.example.demo.pluralsight.log.Main输出结果:Wearelogging,com.example.demo.pluralsight.log.Mainmain,信息以及生成了main_0.log其中内容:2020-03-05T16:37:4415833974643900com.pluralsight.Main信息com.example.demo.pluralsight.log.Mainmain1我们正在记录2020-03-05T16:37:4415833974644001com.pluralsight.MainFINEcom.example.demo.pluralsight.log.Mainmain1我们记录良好