Diamond设计思想杂碎

一、针对每一个类里都定义一个logger显得繁琐,能够定义一个LogUtil,将做用类似的某些类划分红一个log,例如notify package中有notifyTask、notifyProcessor、notifyService,能够归为java

static public final Logger notifyLog = LoggerFactory.getLogger("com.taobao.diamond.server.notifyLog");

LogUtil结构以下,每一个log能够设置成一个log文件,利用logback.xml配置app

public class LogUtil {

    /**
     * 默认的日志
     */
    static public final Logger defaultLog = LoggerFactory.getLogger("com.taobao.diamond.server");

    /**
     * 致命错误,须要告警
     */
    static public final Logger fatalLog = LoggerFactory
            .getLogger("com.taobao.diamond.server.fatal");
    ......
}
<logger name="com.taobao.diamond.server.fatal" additivity="false">
        <level value="INFO" />
        <appender-ref ref="fatalFile" />
    </logger>
<appender name="fatalFile"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${user.home}/diamond/logs/fatal.log</file>
		<append>true</append>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${user.home}/diamond/logs/fatal.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
			<maxFileSize>20MB</maxFileSize> 
			<MaxHistory>15</MaxHistory>
			<totalSizeCap>128MB</totalSizeCap>
			<cleanHistoryOnStart>true</cleanHistoryOnStart>
		</rollingPolicy>
		<encoder>
			<Pattern>%date %level %msg%n%n</Pattern>
			<charset>GBK</charset>
		</encoder>
	</appender>

二、Properties文件包含众多kv,定义一个PropertyUtil,由它负责解析出每一个kv,再使用函数返回v。一样系统参数如System.getProperty("diamond.server.port", "8080");也能够使用这种方式。函数

notifySocketTimeout = Integer.valueOf(props.getProperty("notifySocketTimeout", "200"));

public static int getNotifySocketTimeout() {return notifySocketTimeout;}
相关文章
相关标签/搜索