如何向用户写入滚动文件,主目录

mfuanj7w  于 2022-10-22  发布在  Java
关注(0)|答案(2)|浏览(195)

如何向用户写入滚动文件。主目录。
到目前为止,我尝试设置一个环境变量来访问tinylog属性文件中的路径:

  1. System.setProperty("tinylog.directory", PathHelper.getLoggingDir());

结果:“tinylog”。tinylog.properties在环境变量中找不到目录“”
下面是我在tinylog.properties中的写法:

  1. writerRollingFile.file = ${tinylog.directory}/demo/logs/{date:yyyy-MM-dd}-log.{count}.txt
  2. writerRollingFile.latest = ${tinylog.directory}/demo/logs/latest.txt

另一种方法是通过代码设置tinylog:

  1. Configuration.set("writerRollingFile.file", String.format("%1$s%2$s%3$s", PathHelper.getLoggingDir(), File.separator, "{date:yyyy-MM-dd}-log.{count}.txt"));
  2. Configuration.set("writerRollingFile.latest", String.valueOf(Paths.get(PathHelper.getLoggingDir() , "latest.txt")));

结果:writerRollingFile。文件无法工作,因为tinylog无法在路径和文件之间写入滚动文件->C: \Users\MyUserName\demo\logs;2022-10-17-log.0.txt
另一个文件“latest.txt”是在正确的目录下创建的,没有问题。
下面是我如何使用PathHelper.getLoggingDir()方法解析路径:

  1. Path pathToFile = Paths.get(sUserHomeDir, sAppName, sLoggingDir);

有可能让它与用户一起工作吗。主目录?
感谢马丁,用#{...}替换前缀有帮助:${...}
我的小宝贝。属性文件:

  1. # rolling file
  2. writerRollingFile = rolling file
  3. writerRollingFile.level = warn
  4. writerRollingFile.format = {date: dd.mm.yyyy HH:mm:ss.SSS} {level}: {class}.{method}()\t{message}
  5. writerRollingFile.file = #{tinylog.directory}/{date:yyyy-MM-dd}-log.{count}.txt
  6. writerRollingFile.latest = #{tinylog.directory}/latest.txt
  7. writerRollingFile.charset = UTF-8
  8. writerRollingFile.buffered = true
  9. writerRollingFile.policies = startup, daily: 00:00, size: 1mb
  10. writerRollingFile.backups = 100
  11. writerRollingFile.convert = gzip

并在启动时设置属性:
System.setProperty("tinylog.directory", PathHelper.getLoggingDir());以上
并获取或制作目录:

  1. private static final String sUserHomeDir = System.getProperty("user.home");
  2. private static final String sAppName = "Demo";
  3. private static final String sLoggingDir = "Logs";
  4. public static String getLoggingDir() throws IOException {
  5. // inserts correct file path separator on *nix and Windows
  6. Path pathToFile = Paths.get(sUserHomeDir, sAppName, sLoggingDir);
  7. // The Files.createDirectories creates a new directory;
  8. // if the parent directories do not exist, they are created as well.
  9. // The method does not thrown an exception if the directory already exist.
  10. Files.createDirectories(pathToFile);
  11. return pathToFile.toString();
  12. }
hiz5n14c

hiz5n14c1#

第一种方法是推荐的方法。您只需将${...}替换为#{...}$前缀用于环境变量,#后缀用于系统属性(请参阅文档)。

  1. writerRollingFile.file = #{tinylog.directory}/demo/logs/{date:yyyy-MM-dd}-log.{count}.txt
  2. writerRollingFile.latest = #{tinylog.directory}/demo/logs/latest.txt

此外,如果在发出任何日志条目之前执行System.setProperty("tinylog.directory", PathHelper.getLoggingDir()),则必须进行检查。

yqhsw0fo

yqhsw0fo2#

.................................................

相关问题