java Logger 类
package org.rx.common; import org.slf4j.LoggerFactory; import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import java.util.regex.Pattern; import static org.rx.common.Contract.require; public final class Logger {
static final org.slf4j.Logger log1, log2; static {
System.setProperty("bootstrapPath", App.getBootstrapPath());
log1 = LoggerFactory.getLogger("infoLogger");
log2 = LoggerFactory.getLogger("errorLogger");
} public static org.slf4j.Logger getSlf4j(Class signature) {
return getSlf4j(signature, Collections.emptyList(), null);
} public static org.slf4j.Logger getSlf4j(Class signature, List<String> regs, String cacheMethodName) {
require(signature, regs); Function<String, org.slf4j.Logger> func = k -> {
Class owner = signature;
if (!regs.isEmpty()) {
String fType;
if ((fType = NQuery.of(Thread.currentThread().getStackTrace()).select(p -> p.getClassName())
.firstOrDefault(p -> NQuery.of(regs).any(reg -> Pattern.matches(reg, p)))) != null) {
owner = App.loadClass(fType, false);
}
}
return org.slf4j.LoggerFactory.getLogger(owner);
};
return cacheMethodName != null ? App.getOrStore("Logger" + signature.getName() + cacheMethodName, func)
: func.apply(null);
} public static void debug(String format, Object... args) {
if (!log1.isDebugEnabled()) {
return;
} String msg = args.length == 0 ? format : String.format(format, args);
log1.debug(msg);
} public static void info(String format, Object... args) {
String msg = args.length == 0 ? format : String.format(format, args);
log1.info(msg);
} public static void error(Throwable ex, String format, Object... args) {
String msg = args.length == 0 ? format : String.format(format, args);
log2.error(msg, ex);
}
}
java Logger 类的更多相关文章
- 关于Java Logger类的使用问题 - 内存不释放
原文地址:http://www.ihuxu.com/p/236.html 说明:这是一个利用Java Logger类的示例,完成简单的日志记录功能.代码中有部分类库没有说明,但不影响阅读. 本人技 ...
- Mybatis包分页查询java公共类
Mybatis包分页查询java公共类 分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条 ...
- Java工具类:给程序增加版权信息
我们九天鸟的p2p网贷系统,基本算是开发完成了. 现在,想给后端的Java代码,增加版权信息. 手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...
- Java:类与继承
Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...
- java时间类简单总结
java时间类(Data类) 1.Data类(没有考虑到国际化,好多方法已过时java.util.Data包中) 父类(是类不是接口含有直接子类3个): 日期格式为:年月日时分秒(不包含毫秒部分) ...
- Java Calendar 类的时间操作
Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...
- Disabling default console handler in Java Logger by codes
The open source packages usu. relies on log4j or Java Logger to print logs, by default the console h ...
- Java File类总结和FileUtils类
Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...
- 漫谈 Java 实例化类
Java 中实例化类的动作,你是否还是一成不变 new 对应对象呢? 经手的项目多了,代码编写量自然会增加,渐渐的会对设计模式产生感觉. 怎样使书写出来的类实例化动作,高内聚,低耦合,又兼具一定的扩展 ...
随机推荐
- 小程序 ios 10.1.x 白屏问题
遇到这个问题有点莫名其妙只有IOS10.1.x显示白屏 解决过程很坎坷,一开始以为是调试基础库的问题,改成最新的2.9.2版本. 用这个创建新的项目,把之前的项目内容放到新建项目内, 发现还是不行,后 ...
- 为什么要用getBaseContext()方法代替this?(转)
问:this 常常引用当前的 context.但是有些时候,必须使用getBaseContext()来代替this.就是说使用this会引发错误. 如下面的例子: Spinner spinner = ...
- 64、saleforce 删除操作举例
String deletePrivelegeRoleSql = 'SELECT ROLEID__c, NAME__c, Id, PRIVELEGEID__r.ID, ROLEID__r.ID FROM ...
- Jackson教程
Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象.Jackson所依赖的jar包较少,简 ...
- 使用allure2生成精美报告
安装:brew install allure pip install allure-pytest 在测试执行期间收集结果 pytest -s –q --alluredir=./result/ 测试完成 ...
- 防止按钮重复点击的思路(js篇)
最直接的思路可能就是点击按钮后,按钮的事件绑定函数解绑,1s后重新绑定函数 <button id=</button> <script> btn.onclick = fun ...
- PHP 工厂模式浅析
//抽象出一个人的接口interface Person{ public function showInfo();}//继承于人的学生类class Student implements Person{ ...
- 消费kafka的消息,并将其SparkStreaming结果保存到mysql
将数据保存到mysql,需要用到jdbc.为了提高保存速度,我写了一个连接池 1.保存到mysql的代码 package test05 import org.apache.log4j.{Level, ...
- react 小技巧
1.当从redux里异步获取数据时,在render里渲染dom会出现数据还未获取到的情况,这时可以用 usableSchemas.data.vertexes && usableSche ...
- fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string: "13:02:19"
问题:time类型数据插入不进mysql数据库:调试的时候报如下错误: Caused by: java.lang.NumberFormatException: For input string: &q ...