JAVA日志文件的使用与配置文件的读取
2012-11-28 15:10
651 查看
1.在学习本章之前,需要有这样几个方法需要学习:
//的到的是用户当前的工作目录,参数是一个关键字,还有很多这样的关键字,可以参见API
String path=System.getProperty("user.dir");
System.out.println(path);
现在自定义一个Log文件,叫做log.txt,存放在工程里面的目录中。
下面来看配置文件是如何做到的:
配置文件可以用来存一些常用的一些值,可以用来存储一些不需要在数据库中间存储的值,操作起来相对方便。
大多数的配置文件都是以.property或者xml文件来结尾的,其实以什么何时结尾并不重要,只需是文本文件类型即可。现在,来以ini结尾来创建一个属性文件。
第一步是创建一个ini文件,注意在加载属性之前,要确保这个配置文件是存在的,如果不存在就需要创建。
分清哪些是私有方法,哪些是外部可以调用的方法。
测试,如何使用这些方法:
//的到的是用户当前的工作目录,参数是一个关键字,还有很多这样的关键字,可以参见API
String path=System.getProperty("user.dir");
System.out.println(path);
现在自定义一个Log文件,叫做log.txt,存放在工程里面的目录中。
public class Log { private PrintWriter log = null; // 日志输出流 private static Log logFactory = new Log(); // 创建唯一的实例,使用的是单例模式 /** * 返回唯一的实例 */ public static Log getInstance() { return logFactory; } /** * 初始化日志文件,同时 私有构造方法,防止外部对它进行实例化 */ private Log() { try { /* * 这样得到的是class文件的路径,而不是当前类文件的路径,所以要获得当前类文件的路径,这是错误的做法, * 目前还没有有效的方法获得当前java文件的路径。所以弃之不用。 String * logPath=Log.class.getResource("").toString().substring(6); * 创建路径和创建文件要分开,但这里得到的是已存在的路径。 */ String logPath = System.getProperty("user.dir"); File logFile = new File(logPath, "log.txt"); if (!logFile.exists()) { logFile.createNewFile(); } System.out.println(logFile.toString()); log = new PrintWriter(new FileOutputStream(logFile, true), true); // 建立日志输出流 } catch (Exception e) { log = new PrintWriter(System.err); e.printStackTrace(); System.out.println("初始化日志文件失败"); } } /** * 将异常写入日志 */ public void writeLog(Throwable e, String msg) { // println方法是将内容打印在原先初始化使用的参数中,这里当然就是file文件了 log.println(new Date() + ":" + msg); //这个方法是将异常打印到指定的输出流中间,就是log.txt中 e.printStackTrace(log); } /** * 将文本信息写入日志 */ public void writeLog(String msg) { log.println(new Date() + ":" + msg); } }
下面来看配置文件是如何做到的:
配置文件可以用来存一些常用的一些值,可以用来存储一些不需要在数据库中间存储的值,操作起来相对方便。
大多数的配置文件都是以.property或者xml文件来结尾的,其实以什么何时结尾并不重要,只需是文本文件类型即可。现在,来以ini结尾来创建一个属性文件。
第一步是创建一个ini文件,注意在加载属性之前,要确保这个配置文件是存在的,如果不存在就需要创建。
public class UtilProperties { private FileInputStream in; // 输入流 private FileOutputStream out; // 输出流 private Properties pro; private Log log = Log.getInstance(); // 建立日志输出对象 // 设置文件的默认路径,不需要外部来更改。 private String filePath = System.getProperty("user.dir") + "/property"; private String fileName=filePath+ "/config.ini"; public UtilProperties() { getFile(); } private File createFile(String fileName) throws IOException { String logPath = fileName; File propertiesFilePath = new File(logPath); File propertiesFile = new File(logPath, "config.ini"); if (!propertiesFilePath.exists()) { propertiesFilePath.mkdirs(); } if (!propertiesFile.exists()) { propertiesFile.createNewFile(); } return propertiesFile; } private void getFile() { try { File file = createFile(filePath); in = new FileInputStream(file); pro = new Properties(); pro.load(in); // 加载属性文件,加载以后,才可以对属性文件写入值或者读取值,加载的是输入流,是读取文件 in.close(); } catch (FileNotFoundException e) { log.writeLog(e,"配置文件config.ini找不到!!"); } catch (IOException e) { log.writeLog(e,"读取配置文件config.ini错误!!"); } } /* * 列出所有配置文件的内容,打印在控制台上面,具体参见API */ public void list() { pro.list(System.out); } /* * 指定配置项,返回该配置项的值 * */ public String getItemValue(String key) { return pro.getProperty(key); } /* * 将配置保存 */ public void setItemValue(String key, String value) { pro.setProperty(key, value); } /* * 保存配置文件,指出文件名及其路径,这一步才是真的将文件保存在配置文件中 */ public void saveFile() { try { File file = new File(this.fileName); out = new FileOutputStream(file); pro.store(out, ""); out.close(); } catch (FileNotFoundException e) { log.writeLog(e,"配置文件config.ini找不到!!!"); } catch (IOException e) { log.writeLog(e,"配置文件config.ini写入错误!!"); } } /* * 删除一个属性 * */ public void delete(String key) { pro.remove(key); } /* * 返回配置文件的路径 */ public String getFilePath() { return this.fileName; } }
分清哪些是私有方法,哪些是外部可以调用的方法。
测试,如何使用这些方法:
public class TestDemo { public static void main(String[] args) { UtilProperties utilProperties = new UtilProperties(); utilProperties.setItemValue("AAAA", "aaaa"); utilProperties.setItemValue("BBBB", "bbbb"); utilProperties.saveFile(); String a = utilProperties.getItemValue("AAAA"); System.out.println(a); } }
相关文章推荐
- java中使用log4j日志文件,读取配置文件的方式
- SpringBoot内部配置:“application.properties配置”和”使用XML配置”,读取属性文件中的内容,日志配置,Profile配置(学习:SpringBoot实战)
- 在Java中使用Jdom读取xml配置文件
- 【Properties文件】Java使用Properties来读取配置文件
- JAVA读取classess下的.properties配置文件封装类,linux和windows上都可以使用
- REDIS 学习(9) 使用java8写jedis的技巧,经典jedis池,附配置文件的读取
- Java国际化,使用ResourceBundle的方式读取配置文件
- 使用java读取配置文件(ini、properties)
- 【新手入门】Python下不喜欢使用ConfigParser去读取配置文件的Java developer
- idea工具下使用Java读取配置文件的方式
- 使用java程序读取配置文件中的相关属性值-asp.net关注
- Java中读取配置文件使用jdbc-c3p0连接池连接sqlserver数据库
- java IO 使用Properties设置键值对配置信息 写入文件和从文件中读取
- Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法
- Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中
- 使用Java读取配置文件
- JAVA使用相对路径读取配置文件
- Java_JDBC连接数据库_使用读取配置文件的方式
- java读取配置文件(使用java.util.Properties读取)
- log4j文件使用、java日志配置