- 浏览: 187323 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 623先按Json字符串的格式定义好各级POJO对象,然后就可以简 ... -
Junit4中测试抛异常
2014-07-14 15:43 686虽然很简单,但是久了不用很容易忘记…… 其实就是在@Te ... -
使用apache poi读写excel文件
2014-06-06 10:26 1458apache poi软件包可以用来操作office文档,并 ... -
Log4j2配置入门
2014-04-14 14:29 1419首先是Log4j升级到2.0版本以后,只支持XML格式的配 ... -
Log4j日志格式化pattern参数
2014-03-24 14:39 1052格式名 含义 %c 输出日志信息所属的类的全名 %d ... -
对私有方法进行单元测试
2014-03-05 16:40 1712为了提升代码质量, ... -
使用jxl读写Excel文件
2013-12-04 15:54 927代码: import java.io.File; imp ... -
Quartz表达式
2013-12-02 17:37 611通配符说明 “*”字符代表所有可能的值 “/”字符用 ... -
enum简单示例
2013-09-18 09:30 658最简单的情况,只有name,适合程序内部使用,不需要在界面 ... -
构造人性化的运行耗时字符串
2013-05-03 09:34 750工具类 /** * 构造人性化的运行耗时字符串。 ... -
用SAX(JDK自带API)解析XML文件
2013-04-15 17:11 3921解析的工具类继承org.xml.sax.helpers.D ... -
XML命名空间与验证小结
2013-04-07 15:00 874命名空间主要是用来避 ... -
jetty-distribution-9.0.0.M0
2013-01-08 23:16 723jetty-distribution-9.0.0.M0 -
常用正则表达式
2013-01-06 10:16 595解析IP地址 ((?:(?:25[0-5]|2[0-4]\d| ... -
读取控制台输入
2013-01-06 10:13 733以下代码适用于JDK1.5以上 private s ... -
Java命令行指定lib目录
2012-11-08 10:43 2875java -Djava.ext.dirs=xxx -
HttpClient简单示例
2012-10-18 13:36 1315代码中用到的是httpclie ... -
使用dom4j解析XML简单示例
2012-10-18 10:51 828从字符串解析XML public class Dom4 ... -
LDAP身份验证示例
2012-07-26 10:46 1693public class LDAPAuthenticat ... -
yyyy-MM-dd格式的Java日期校验代码
2012-03-01 09:49 12353用正则表达式匹配,从1970-01-01开始往后2万天逐一测试 ...
相关推荐
Tomcat自带的日志实现是tomcat-juli.jar,它是对默认的JDK日志java.util.logging进行一定的封装,和标准JDK日志支持相同的配置,但是和log4j等常用的日志框架比起来功能要较为简陋。但是tomcat-juli可以针对不同的...
Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 commons-digester.jar Apache Commons包中的一个,通过它可以很方便的解析xml文件生成java对象 aspectjrt.jar 和aspectjweaver.jar Annotation...
为了简单起见,例子没有没有使用任何第三方的AOP Framework, 而是利用Java语言本身自带的动态代理功能来实现AOP. 让我们先回到AOP本身,AOP主要应用于日志记录,性能统计,安全控制,事务处理等方面。它的主要...
11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现...
11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现...
11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现...
11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现...
开发包里自带了一系列傻瓜上手demo,包括分布式计算、统一配置管理、集群管理、分布式锁、分布式缓存、MQ等方面, 每个demo均控制在少许行代码内,但是涵盖了Fourinone主要的功能,方便大家快速理解并掌握。...
11、支持jenkins一键部署,另自带docker maven插件,支持docker部署。 12、文件,短信,缓存,邮件等,利用接口封装,方便拓展。 13、文件默认使用本地文件,短信默认使用阿里云sms,缓存默认使用内存缓存。 14、...
Guns-Separation快速开始准备以下环境:1、npm,jdk1.8,maven 3.6或以上版本。2、需要准备一个mysql 5.7数据库。3、您的IDE需要安装lombok插件。前端运行:1、cd _web/2、npm install3、npm run serve后端运行:1、...
软件状况及版本 宿主机及两台虚拟机的操作系统均使用windows 2003企业版,升级至sp2以上 虚拟机软件此次使用 VMware Server 1、0、6 Oracle与SAP:此次使用SAP Ecc 5、0以及SAP自带的oracle,补丁,OFS Jdk:版本必须为 ...
2.5.4 struts 2的自带校验器 92 2.6 struts 2的拦截器 94 2.6.1 struts 2内建拦截器介绍 95 2.6.2 定义和使用拦截器栈 97 2.6.3 使用自定义拦截器 98 2.7 小结 100 第3章 struts 2标签库详解与ajax技术应用 ...
1. 使用tomcat自带的cluster方式,多个tomcat见自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。 2. 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一...
近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性...
开发平台:Win2003 + Apache2.0.52 + Tomcat5.54 + Mod_jk 1.2.6 + JDK1.5 程序正常运行需要JVM(Java虚拟机)1.5以上的版本。 安装说明: 一、首先请自行建好JSP服务器。单独运行或者与Apache集成都行(我用的是...