java LogWriter
package org.rx.core; import lombok.Getter;
import lombok.Setter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import java.io.StringWriter; import static org.rx.core.Contract.require; @Slf4j
public class LogWriter extends StringWriter {
private org.slf4j.Logger logRef;
@Getter
@Setter
private String prefix; public LogWriter() {
this(log);
} public LogWriter(org.slf4j.Logger log) {
require(log); this.logRef = log;
} @Override
public void write(@NotNull String str) {
super.write(prefix);
super.write(" ");
super.write(str);
} @Override
public void write(String str, int off, int len) {
write(str.substring(off, off + len));
} public LogWriter writeLine() {
super.write(System.lineSeparator());
return this;
} public LogWriter info(Object obj) {
write(String.valueOf(obj));
writeLine();
return this;
} public LogWriter info(String format, Object... args) {
write(String.format(format.replace("{}", "%s"), args));
writeLine();
return this;
} public LogWriter infoAndFlush(Object obj) {
info(obj).flush();
return this;
} public LogWriter infoAndFlush(String format, Object... args) {
info(format, args).flush();
return this;
} public LogWriter error(String msg, Throwable e) {
logRef.error(msg, e);
return this;
} @Override
public void flush() {
super.flush();
StringBuffer buffer = super.getBuffer();
logRef.info(buffer.toString());
buffer.setLength(0);
} @SneakyThrows
@Override
public void close() {
this.flush();
super.close();
}
}
java LogWriter的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 【JAVA并发编程实战】7、日志服务
这里是一个应用项目使用生产消费模型的日志类 package cn.study.concurrency; import java.util.concurrent.BlockingQueue; impor ...
- java并发编程学习: 守护线程(Daemon Thread)
在正式理解这个概念前,先把 守护线程 与 守护进程 这二个极其相似的说法区分开,守护进程通常是为了防止某些应用因各种意外原因退出,而在后台独立运行的系统服务或应用程序. 比如:我们开发了一个邮件发送程 ...
- [数据库连接池] Java数据库连接池--DBCP浅析.
前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务 ...
- kettle job如何利用java的反射机制获取执行的sql语句
kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...
- java开发经验分享(一)
一. 编码 1. 约束自己,规范编码习惯 充足的代码注释.标准缩进的格式.注意命名规范.参考<开发管理规范> "看上去"专业能促进代码质量.越是难看的代码,在它的演化过 ...
- JAVA 编程规范
软件开发技术规范 PTHINK-DEVELOP-JAVA-091010 Java语言编程规范 2009-10-10发布 2009-10-11实施 ...
- java并发编程实战:第七章----取消与关闭
Java没有提供任何机制来安全地终止线程(虽然Thread.stop和suspend方法提供了这样的机制,但由于存在缺陷,因此应该避免使用 中断:一种协作机制,能够使一个线程终止另一个线程的当前工作 ...
- Java编程规范[转]
目录 1 概述.... 5 1.1 目标:.... 5 1.2 原则:.... 5 2 Java编程命名规范.... 5 2.1 包的命名标准.. ...
随机推荐
- Bootstarp-源码分析-alert.js v3.x和v4.x的对比
一些概念 1. 使用 data-api 调用 就是给所有带有data-dismiss="alert"的元素绑定点击事件 v3.x: $(document).on('click.bs ...
- Visual Studio禁用IntelliSense
通过Everything搜索feacp.dll,然后修改其名字或者直接删除之. 重启Visual Studio.
- Java + selenium window()接口方法介绍
在浏览器启动的代码中,有一段关于window接口的调用,这篇文章就是来解释介绍这个接口的.代码如下 driver.manage().window().maxmize(); window接口主要是用来控 ...
- 数据结构C语言实现
顺序表实现 typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Po ...
- 再往DjVu鼓吹者的头上敲一棒子
最近在某论坛又看到有人在鼓吹DjVu,甚至声称拿到PDG就转成DjVu,忍不住想再敲打敲打. 早几年前就已经有人举出过实例,证明PDG.TIFF转DjVu会因为有损压缩而产生错别字,似乎时间长了一堆新 ...
- luoguP1083 借教室(题解)(我用的线段树)
luoguP1083 借教室 题目 #include<cstdio> #include<iostream> #include<cmath> #include< ...
- python面试题之用列表解析式选出1-100中的奇数
[i for i in range(100) if i % 2 != 0](其实这里有很多种做法,比如最简单的用切片就可以了 list(range(100))[1::2]都不需要列表解析式本文首发于p ...
- 从一个Activity打开另外一个Activity
public class MainActivity extends Activity { /** Called when the activity is first created. */ @Over ...
- System.Net.Mail.SmtpException:不允许使用邮箱名称.
使用SmtpClient发送邮件的时候,出现了如题错误. 解决方案: 将 SmtpClient.UseDefaultCredentials 属性设置为 true . 官方文档说明: Some SM ...
- 将循环结果通过管道传递给其他命令处理(done |)