java不通过配置文件初始化logger示例

代码如下:

import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

public class LoggerUtils {

/**
  * 创建Logger实例
  *
  * @param clazz  事件日志发生类
  * @param ifConsole 是否输出到控制台
  * @param ifFile  是否输出到文件
  * @param logFile  日志文件地址(路径分割使用“/”)
  * @param ifLocate 是否定位事件日志发生位置(类.方法 line)
  * @return Logger
  */
 public static Logger getLogger(Class<?> clazz, boolean ifConsole, boolean ifFile, String logFile, boolean ifLocate) {

if(ifConsole == false && ifFile == false) return null;

if(ifFile == true && logFile.trim().length() < 1) return null;

String conversionPattern;
  if(ifLocate == true) {
   // 日志内容形式如:2014-03-11 01:34:45.572 [DEBUG] com.aliyun.qa.utils.LoggerUtilsTest.main(Line:15): 测试DEBUG日志
   conversionPattern = "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c.%M(Line:%L): %m %n";
  } else {
   // 日志内容形式如:2014-03-11 01:34:45.572 [DEBUG] : 测试DEBUG日志
   conversionPattern = "%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] : %m %n";
  }
  PatternLayout layout = new PatternLayout();
  layout.setConversionPattern(conversionPattern);

Logger logger = Logger.getLogger(clazz);
  logger.removeAllAppenders();
  logger.setLevel(Level.DEBUG);
  logger.setAdditivity(false);     // Logger不会在父Logger的appender里输出,默认为true

if(ifConsole == true) {  // 日志输出到控制台
   ConsoleAppender consoleAppender = new ConsoleAppender();
   consoleAppender.setLayout(layout);
   consoleAppender.setThreshold(Level.INFO);  // ConsoleAppender日志级别为DEBUG
   consoleAppender.activateOptions();
   logger.addAppender(consoleAppender);
  }

if(ifFile == true) {  // 日志输出到文件
   FileAppender fileAppender = new FileAppender();
   fileAppender.setLayout(layout);
   fileAppender.setFile(logFile);
   fileAppender.setEncoding("UTF-8");
   fileAppender.setAppend(true);
   fileAppender.setThreshold(Level.INFO);   // FileAppender日志级别为INFO
   fileAppender.activateOptions();
   logger.addAppender(fileAppender);
  }

return logger;
 }

/**
  * 创建Logger实例(仅输出到控制台)
  *
  * @param clazz  事件日志发生类
  * @param ifLocate 是否定位事件日志发生位置(类.方法 line)
  * @return Logger
  */
 public static Logger getLogger(Class<?> clazz, boolean ifLocate) {
  return getLogger(clazz, true, false, null, ifLocate);
 }

/**
  * 创建Logger实例(仅输出到文件)
  *
  * @param clazz  事件日志发生类
  * @param logFile  日志文件地址(路径分割使用“/”)
  * @param ifLocate 是否定位事件日志发生位置(类.方法 line)
  * @return Logger
  */
 public static Logger getLogger(Class<?> clazz, String logFile, boolean ifLocate) {
  return getLogger(clazz, false, true, logFile, ifLocate);
 }

}

(0)

相关推荐

  • java读取properties配置文件的方法

    本文实例讲述了java读取properties配置文件的方法.分享给大家供大家参考.具体分析如下: 这两天做java项目,用到属性文件,到网上查资料,好半天也没有找到一个满意的方法能让我读取到.properties文件中属性值,很是郁闷,网上讲的获取属性值大概有以下方法,以下三种方法逐渐优化,以达到最好的效果以下都以date.properties文件为例,该文件放在src目录下,文件内容为: startdate=2011-02-07 totalweek=25 方法一: public class

  • java中读取配置文件中数据的具体方法

    1.先在项目中创建一个包(如:config),再创建一个配置文件(如:a.properties),添加配置信息如下:比如: 复制代码 代码如下: name=kakaage=28 2.代码: 复制代码 代码如下: import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertyTest { public static void main(String[

  • 详解java配置文件的路径问题

    详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设置. 那么我们需要读取配置文件,是需要获取配置文件的路径.那么配置文件的路径怎么写呢? 1.绝对路径 绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径.如果我们将配置文件的路径写成绝对路径的话,相对于各种计算机系统来说是不通用的. 2.相对路径 相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的

  • Java读取properties配置文件时,出现中文乱码的解决方法

    如下所示: public static String getConfig(String key) { Properties pros = new Properties(); String value = ""; try { pros.load(new InputStreamReader(Object.class.getResourceAsStream("/properties.properties"), "UTF-8")); value = pr

  • 一个Java配置文件加密解密工具类分享

    常见的如: 数据库用户密码,短信平台用户密码,系统间校验的固定密码等.本工具类参考了 <Spring.3.x企业应用开发实战>一书 5.3节的实现.完整代码与注释信息如下: 复制代码 代码如下: package com.cncounter.util.comm; import java.security.Key;import java.security.SecureRandom; import javax.crypto.Cipher;import javax.crypto.KeyGenerato

  • Java中spring读取配置文件的几种方法示例

    Spring读取配置XML文件分三步: 一.新建一个Java Bean: package springdemo; public class HelloBean { private String helloWorld; public String getHelloWorld() { return helloWorld; } public void setHelloWorld(String helloWorld) { this.helloWorld = helloWorld; } } 二.构建一个配

  • java不通过配置文件初始化logger示例

    复制代码 代码如下: import org.apache.log4j.ConsoleAppender;import org.apache.log4j.FileAppender;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout; public class LoggerUtils { /**  * 创建Logger实例  *   * @param cla

  • Java 静态数据初始化的示例代码

    无论创建多少个对象,静态数据都只占用一份存储区域.static关键字不能应用于局部变量,因此它只能作用于域.如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初始值:如果它是一个对象引用,那么它的默认初始值就是null class Bowl { public Bowl(int marker) { System.out.println("Bowl(" + marker + ")"); } void f1(int marker) { Sy

  • Java读取.properties配置文件方法示例

    一.介绍 Properties文件在Java中主要为配置文件,文件类型为:.properties,格式为文本文件,内容格式为"键=值" 二.读取 这里我采用的是getResourceAsStream的文件读取方法 如果想要使用这个方法,则需要了解一些基本使用信息: 1.读取文件路径范围:只局限于工程的源文件中 2.文件访问形式:带"/"是绝对路径,不带"/"是相对路径 3.读取文件类型:主要为:.properties文件,.xml文件 三.使用

  • java 读写 ini 配置文件的示例代码

    下面通过代码先看下java 读写 ini 配置文件,代码如下所示: package org.fh.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.net.URLDecoder; import java.util.regex.

  • java 导入Excel思路及代码示例

    导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 一.思路分析 1.我们要做导入,实际上也就是先文件上传,然后读取文件的数据. 2.我们要有一个导入的模板,因为我们导入的Excel列要和我们的数据字段匹配上,所以我们要给它来一个规定,也就是模板. 3.按照我们公司的套路,是做了一个导入信息的临时表,用来存导入文件中的信息.每当导入的时候,我们先把表信息清空,再拿到数据放进来,然后我们对导入的数据进行检查,最后才全部导入.

  • 如何基于JAVA读取yml配置文件指定key内容

    这篇文章主要介绍了如何基于JAVA读取yml配置文件指定key内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先引入需要的依赖 <!--读取yml文件--> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.23</version>

  • java基于spring boot本地上传图片示例解析

    前几天项目中刚好需要上传图片的需求,当时想的是用七牛云,因为我用七牛云也用了好几次,就是把图片上传到七牛云空间里面,数据库里面保存的是这张上传图片的url地址 那么页面访问也就很方便,考虑到项目部署的环境我就用了本地上传,不牵涉数据库的操作.我就花了半个小时写了个本地上传图片的小demo.非常的简单. 下面是需要的依赖 pom.xml文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=

  • Java中的ThreadLocal功能演示示例

    除了使用synchronized同步符号外,Java中的ThreadLocal是另一种实现线程安全的方法.在进行性能测试用例的编写过程中,比较简单的办法就是直接使用synchronized关键字,修饰对象.方法以及类.但是使用synchronized同步,这可能会影响应用程序的可伸缩性以及运行效率.但是如果要在多个线程之间共享对象又要保障线程安全,则除了synchronized之外没有特别适合测试的方法. Java中的ThreadLocal是实现线程安全的另一种方法,它不满足同步要求,而是通过为

  • Java使用SAX解析xml的示例

    一.SAX解析xml简介 SAX是Simple API for Xml的简写,主要功能是用于对xml文档进行解析.由于该方式采用的是事件驱动(callback回调机制)解析方式,所以有速度快.占内存少的优点,当然这些优点也仅限于xml的读取操作,SAX是无法对读取的XML元素进行修改的.如果要修改节点元素则需要使用DOC方式进行将xml文件读取,它会将xml读取成document树结构对象,这样可用对节点元素进行编辑操作:DOC方式的缺点也比较明显:占内存大.解析速度较慢. 所以仅用于读取xml

  • Java自定义线程池的实现示例

    目录 一.Java语言本身也是多线程,回顾Java创建线程方式如下: 二.JDK线程池工具类. 三.业界知名自定义线程池扩展使用. 一.Java语言本身也是多线程,回顾Java创建线程方式如下: 1.继承Thread类,(Thread类实现Runnable接口),来个类图加深印象. 2.实现Runnable接口实现无返回值.实现run()方法,啥时候run,黑话了. 3.实现Callable接口重写call()+FutureTask获取. public class CustomThread {

随机推荐