当前位置:   article > 正文

JAVA日志文件的使用与配置文件的读取_java中统计其它项目的日志,并获取配置文件项目名称

java中统计其它项目的日志,并获取配置文件项目名称

1.在学习本章之前,需要有这样几个方法需要学习:

//的到的是用户当前的工作目录,参数是一个关键字,还有很多这样的关键字,可以参见API

String path=System.getProperty("user.dir");

System.out.println(path);

现在自定义一个Log文件,叫做log.txt,存放在工程里面的目录中。

  1. public class Log {
  2. private PrintWriter log = null; // 日志输出流
  3. private static Log logFactory = new Log(); // 创建唯一的实例,使用的是单例模式
  4. /**
  5. * 返回唯一的实例
  6. */
  7. public static Log getInstance() {
  8. return logFactory;
  9. }
  10. /**
  11. * 初始化日志文件,同时 私有构造方法,防止外部对它进行实例化
  12. */
  13. private Log() {
  14. try {
  15. /*
  16. * 这样得到的是class文件的路径,而不是当前类文件的路径,所以要获得当前类文件的路径,这是错误的做法,
  17. * 目前还没有有效的方法获得当前java文件的路径。所以弃之不用。 String
  18. * logPath=Log.class.getResource("").toString().substring(6);
  19. * 创建路径和创建文件要分开,但这里得到的是已存在的路径。
  20. */
  21. String logPath = System.getProperty("user.dir");
  22. File logFile = new File(logPath, "log.txt");
  23. if (!logFile.exists()) {
  24. logFile.createNewFile();
  25. }
  26. System.out.println(logFile.toString());
  27. log = new PrintWriter(new FileOutputStream(logFile, true), true); // 建立日志输出流
  28. } catch (Exception e) {
  29. log = new PrintWriter(System.err);
  30. e.printStackTrace();
  31. System.out.println("初始化日志文件失败");
  32. }
  33. }
  34. /**
  35. * 将异常写入日志
  36. */
  37. public void writeLog(Throwable e, String msg) {
  38. // println方法是将内容打印在原先初始化使用的参数中,这里当然就是file文件了
  39. log.println(new Date() + ":" + msg);
  40. //这个方法是将异常打印到指定的输出流中间,就是log.txt中
  41. e.printStackTrace(log);
  42. }
  43. /**
  44. * 将文本信息写入日志
  45. */
  46. public void writeLog(String msg) {
  47. log.println(new Date() + ":" + msg);
  48. }
  49. }

下面来看配置文件是如何做到的:

配置文件可以用来存一些常用的一些值,可以用来存储一些不需要在数据库中间存储的值,操作起来相对方便。

大多数的配置文件都是以.property或者xml文件来结尾的,其实以什么何时结尾并不重要,只需是文本文件类型即可。现在,来以ini结尾来创建一个属性文件。

第一步是创建一个ini文件,注意在加载属性之前,要确保这个配置文件是存在的,如果不存在就需要创建。

  1. public class UtilProperties {
  2. private FileInputStream in; // 输入流
  3. private FileOutputStream out; // 输出流
  4. private Properties pro;
  5. private Log log = Log.getInstance(); // 建立日志输出对象
  6. // 设置文件的默认路径,不需要外部来更改。
  7. private String filePath = System.getProperty("user.dir") + "/property";
  8. private String fileName=filePath+ "/config.ini";
  9. public UtilProperties() {
  10. getFile();
  11. }
  12. private File createFile(String fileName) throws IOException {
  13. String logPath = fileName;
  14. File propertiesFilePath = new File(logPath);
  15. File propertiesFile = new File(logPath, "config.ini");
  16. if (!propertiesFilePath.exists()) {
  17. propertiesFilePath.mkdirs();
  18. }
  19. if (!propertiesFile.exists()) {
  20. propertiesFile.createNewFile();
  21. }
  22. return propertiesFile;
  23. }
  24. private void getFile() {
  25. try
  26. {
  27. File file = createFile(filePath);
  28. in = new FileInputStream(file);
  29. pro = new Properties();
  30. pro.load(in); // 加载属性文件,加载以后,才可以对属性文件写入值或者读取值,加载的是输入流,是读取文件
  31. in.close();
  32. } catch (FileNotFoundException e) {
  33. log.writeLog(e,"配置文件config.ini找不到!!");
  34. } catch (IOException e) {
  35. log.writeLog(e,"读取配置文件config.ini错误!!");
  36. }
  37. }
  38. /*
  39. * 列出所有配置文件的内容,打印在控制台上面,具体参见API
  40. */
  41. public void list() {
  42. pro.list(System.out);
  43. }
  44. /*
  45. * 指定配置项,返回该配置项的值
  46. *
  47. */
  48. public String getItemValue(String key) {
  49. return pro.getProperty(key);
  50. }
  51. /*
  52. * 将配置保存
  53. */
  54. public void setItemValue(String key, String value) {
  55. pro.setProperty(key, value);
  56. }
  57. /*
  58. * 保存配置文件,指出文件名及其路径,这一步才是真的将文件保存在配置文件中
  59. */
  60. public void saveFile() {
  61. try {
  62. File file = new File(this.fileName);
  63. out = new FileOutputStream(file);
  64. pro.store(out, "");
  65. out.close();
  66. } catch (FileNotFoundException e) {
  67. log.writeLog(e,"配置文件config.ini找不到!!!");
  68. } catch (IOException e) {
  69. log.writeLog(e,"配置文件config.ini写入错误!!");
  70. }
  71. }
  72. /*
  73. * 删除一个属性
  74. *
  75. */
  76. public void delete(String key) {
  77. pro.remove(key);
  78. }
  79. /*
  80. * 返回配置文件的路径
  81. */
  82. public String getFilePath() {
  83. return this.fileName;
  84. }
  85. }

分清哪些是私有方法,哪些是外部可以调用的方法。

测试,如何使用这些方法:

  1. public class TestDemo {
  2. public static void main(String[] args) {
  3. UtilProperties utilProperties = new UtilProperties();
  4. utilProperties.setItemValue("AAAA", "aaaa");
  5. utilProperties.setItemValue("BBBB", "bbbb");
  6. utilProperties.saveFile();
  7. String a = utilProperties.getItemValue("AAAA");
  8. System.out.println(a);
  9. }
  10. }



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/157735
推荐阅读
相关标签
  

闽ICP备14008679号