zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    JVM实战---类加载的过程
    MobaXterm:远程终端登录软件封神选手
    Linux内核实战(二)- 操作系统概览
    Linux再学习(一)-学习路线规划
    Flink实战(八)
    Docker实战之Redis-Cluster集群
    通过乐观锁解决库存超卖的问题
    Docker实战之MySQL主从复制
    JVM类加载器是否可以加载自定义的String
    设计模式--单例
  • 原文地址:https://www.cnblogs.com/Googler/p/12010869.html
Copyright © 2011-2022 走看看