- 浏览: 194120 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Ma__sm:
感谢
yyyy-MM-dd格式的Java日期校验代码 -
samjavaeye:
weirihai 写道访问都地址都打不开。
刚点了一遍,都能 ...
WebLogic在线文档中心 -
weirihai:
访问都地址都打不开。
WebLogic在线文档中心
【适用场景】
JDK自带的日志包,感觉功能没有Log4j强,也没log4j好用,可能是先入为主吧。但在个人开发测试的时候,毕竟是JDK自带的东西,不需要引入jar包,也不需要写配置文件,因此做一些简单、临时的日志输出,还是挺管用的。
稍微研究了一下,简单封装了几个类,日后自己用的时候,直接Copy就好了,免得重复研究浪费精力。
格式化类MySimpleFormatter:
import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.LogRecord; public class MySimpleFormatter extends Formatter { private static final String NEW_LINE = (String) java.security.AccessController .doPrivileged(new sun.security.action.GetPropertyAction( "line.separator")); private static int STACK_TRACE_ELEMENT_INDEX = 7; private static final String SEPERATE_LINE = "----------------------------------"; private static final SimpleDateFormat sf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); @Override public String format(LogRecord record) { StringBuffer sb = new StringBuffer(); buildClassAndMethodInfo(record, sb); String separateLine = buildSeparateLine(new Date(record.getMillis())); sb.append(separateLine); sb.append(record.getMessage()).append(NEW_LINE); sb.append(separateLine); return sb.toString(); } private static StackTraceElement getStackTraceElement(LogRecord record) { StackTraceElement[] stackTraceElements = new Throwable() .getStackTrace(); String name = record.getSourceClassName(); if (name == null) name = record.getLoggerName(); for (StackTraceElement stackTraceElement : stackTraceElements) { if (name.equals(stackTraceElement.getClassName())) return stackTraceElement; } StackTraceElement stackTraceElement = stackTraceElements[STACK_TRACE_ELEMENT_INDEX]; return stackTraceElement; } private static void buildClassAndMethodInfo(LogRecord record, StringBuffer sb) { StackTraceElement stackTraceElement = getStackTraceElement(record); sb.append(NEW_LINE).append(stackTraceElement.getClassName()); sb.append('.'); sb.append(stackTraceElement.getMethodName()).append("("); sb.append(stackTraceElement.getLineNumber()).append(")"); sb.append(NEW_LINE); } private static String buildSeparateLine(Date currentTime) { StringBuffer sb = new StringBuffer(); sb.append(SEPERATE_LINE).append(" <").append(sf.format(currentTime)) .append("> ").append(SEPERATE_LINE).append(NEW_LINE); return sb.toString(); } }
自己的控制台Handler类:
import java.util.logging.ConsoleHandler; import java.util.logging.Level; public class MyConsoleHandler extends ConsoleHandler { public MyConsoleHandler() { setLevel(Level.FINEST); setFormatter(new MySimpleFormatter()); setOutputStream(System.out); } }
客户端示例:
import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.Logger; public class LogClient { public static void main(String[] args) { Logger logger = Logger.getLogger(LogClient.class.toString()); // 设置整个Logger的日志级别 logger.setLevel(Level.FINER); // MyConsoleHandler的日志级别默认为Level.FINEST,输出到System.out Handler myConsoleHandler = new MyConsoleHandler(); logger.addHandler(myConsoleHandler); doLog(logger); logger.removeHandler(myConsoleHandler); try { // 指定日志文件名,写入模式为append Handler fileHandler = new FileHandler("D:\\temp\\test.log", true); // 设置自己的Formatter,否则缺省为XMLFormatter fileHandler.setFormatter(new MySimpleFormatter()); logger.addHandler(fileHandler); doLog(logger); } catch (SecurityException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void doLog(Logger logger) { logger.severe("severe"); logger.warning("warning"); logger.info("info"); logger.config("config"); logger.fine("fine"); logger.finer("finer"); logger.finest("finest"); } }
- jdklogging.rar (1.7 KB)
- 下载次数: 8
发表评论
-
Java处理Json的简单方式
2017-01-04 10:56 671先按Json字符串的格式定义好各级POJO对象,然后就可以简 ... -
Junit4中测试抛异常
2014-07-14 15:43 747虽然很简单,但是久了不用很容易忘记…… 其实就是在@Te ... -
使用apache poi读写excel文件
2014-06-06 10:26 1508apache poi软件包可以用来操作office文档,并 ... -
Log4j2配置入门
2014-04-14 14:29 1481首先是Log4j升级到2.0版本以后,只支持XML格式的配 ... -
Log4j日志格式化pattern参数
2014-03-24 14:39 1160格式名 含义 %c 输出日志信息所属的类的全名 %d ... -
对私有方法进行单元测试
2014-03-05 16:40 1748为了提升代码质量, ... -
使用jxl读写Excel文件
2013-12-04 15:54 998代码: import java.io.File; imp ... -
Quartz表达式
2013-12-02 17:37 655通配符说明 “*”字符代表所有可能的值 “/”字符用 ... -
enum简单示例
2013-09-18 09:30 709最简单的情况,只有name,适合程序内部使用,不需要在界面 ... -
构造人性化的运行耗时字符串
2013-05-03 09:34 808工具类 /** * 构造人性化的运行耗时字符串。 ... -
用SAX(JDK自带API)解析XML文件
2013-04-15 17:11 3967解析的工具类继承org.xml.sax.helpers.D ... -
XML命名空间与验证小结
2013-04-07 15:00 909命名空间主要是用来避 ... -
jetty-distribution-9.0.0.M0
2013-01-08 23:16 765jetty-distribution-9.0.0.M0 -
常用正则表达式
2013-01-06 10:16 631解析IP地址 ((?:(?:25[0-5]|2[0-4]\d| ... -
读取控制台输入
2013-01-06 10:13 782以下代码适用于JDK1.5以上 private s ... -
Java命令行指定lib目录
2012-11-08 10:43 3016java -Djava.ext.dirs=xxx -
HttpClient简单示例
2012-10-18 13:36 1372代码中用到的是httpclie ... -
使用dom4j解析XML简单示例
2012-10-18 10:51 876从字符串解析XML public class Dom4 ... -
LDAP身份验证示例
2012-07-26 10:46 1756public class LDAPAuthenticat ... -
yyyy-MM-dd格式的Java日期校验代码
2012-03-01 09:49 12456用正则表达式匹配,从1970-01-01开始往后2万天逐一测试 ...
相关推荐
本篇文章将详细介绍如何简单地建立数据连接池以及如何使用JDK自带的日志功能。 首先,我们来了解数据连接池的基本原理。数据连接池,如Apache的Commons DBCP、C3P0或HikariCP,它们预先创建一定数量的数据库连接,...
本示例将重点讨论如何使用JDBC API和JDK自带的日志系统进行简单的数据库连接池配置。 首先,数据库连接池的基本工作原理是预先创建一定数量的数据库连接,并存储在一个池中。当应用需要连接数据库时,它会从池中...
标题提到的"jdk1.4 json包 6个全"指的是为Java 1.4版本提供的一个完整的JSON处理库,包含了六个相关的jar文件。 1. **commons-collections.jar**:这是Apache Commons Collections库,提供了大量的集合框架扩展,...
WebSphere MQ 8.0 自带的 JAR 包是一组关键组件,它们构成了 IBM 的消息中间件解决方案,用于在不同应用程序之间可靠地传递数据。这些 JAR 文件位于 `WebSphere MQ\java\lib` 目录下,是开发、配置和运行与 ...
- 在应用中,需要添加 SLF4J 的桥接库,如 slf4j-log4j12.jar(如果使用 Log4j)或者 slf4j-jdk14.jar(如果使用 JUL),以便 SLF4J 调用实际的日志框架。 4. **压缩包中的文件**: - 压缩包 "shiro" 可能包含了 ...
9. **JConsole**:JDK自带的性能监控工具JConsole在1.6中得到增强,可以提供更详细的内存、CPU和线程监控,帮助开发者诊断性能问题。 10. **JAR文件签名和验证**:1.6版本改进了对JAR文件的签名和验证机制,增强了...
# 基于Spring Boot和Log4j2的TruthBean日志系统 ... 支持多种日志适配器,如Log4j2、SLF4J、JDK自带日志系统等。 3. 高性能日志记录 使用Log4j2作为底层日志框架,提供高效的日志记录和输出性能。
将这些库放入`endorsed`目录是因为它们会优先于JDK自带的类加载,从而可能解决了由于版本不匹配或API实现不完全而导致的问题。 在某个老外网站上,7楼的建议被采纳,这表明社区支持和经验分享在解决这类问题中起到...
3. **开发者工具指南**:这部分涵盖JDK自带的各种开发工具,如javac编译器、javadoc生成文档工具、junit测试框架等。了解这些工具的使用能极大地提高开发效率。 4. **性能和调优指南**:对于大型应用或性能敏感的...
在进行Java应用程序开发时,经常需要用到JDK(Java Development Kit)和JBoss这样的应用服务器。本文将详细介绍如何下载并配置JDK和JBoss,帮助开发者顺利搭建开发环境。 #### 一、JDK的安装配置 1. **下载JDK** ...
Tomcat自带的日志实现是tomcat-juli.jar,它是对默认的JDK日志java.util.logging进行一定的封装,和标准JDK日志支持相同的配置,但是和log4j等常用的日志框架比起来功能要较为简陋。但是tomcat-juli可以针对不同的...
这是Java标准库中自带的日志系统,简单易用。它的主要优点在于无需额外引入依赖,缺点是功能相对有限,不支持复杂的配置和日志级别控制。例如,`java.util.logging.Logger`类提供了基础的日志记录功能,但其灵活性和...
- **性能监控工具**:使用JDK自带的工具(如VisualVM、JConsole等)来监控Java应用的运行状态。 ### 安全性与更新 - **定期更新**:及时更新JDK到最新版本可以确保获得最新的安全补丁和性能改进。 - **安全配置**...
SLF4J提供了一个统一的日志接口,允许开发者在部署时通过类路径中的特定jar包指定日志实现,如slfj-log4j12.jar、slf4j-jdk14.jar等。这使得在不修改代码的情况下,可以轻松切换日志实现,避免了JCL的动态绑定问题。...
1. **监控**:使用JDK自带的JMX(Java Management Extensions)或第三方工具(如VisualVM)监控Java应用的性能。 2. **日志分析**:通过2023-06-11.txt这样的日志文件,可以追踪应用程序的运行情况,及时发现并解决...
标题中的“测试工程(netbeans8.1,NetBeans自带glassfish4.1,JDK7)”指的是一项基于NetBeans 8.1集成开发环境、使用GlassFish 4.1应用服务器,并且依赖于Java Development Kit 7(JDK7)的软件测试项目。...
在Java中,我们可以使用JDK自带的动态代理或者第三方库如CGLIB、Javassist、ASM来实现。 **JDK动态代理**: JDK的动态代理主要依赖于`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`两个类。...
JDK自带的logging机制则更加轻量级,可以无缝地集成到Java应用中。 然而,Apache与Sun之间关于日志工具的竞争促使***e推出了Commons Logging组件日志门面库,它是Java日志门面库,提供了一系列用于各种日志系统的...