Install4j:带有时间戳的Updater日志文件名

时间:2017-02-06 14:09:58

标签: java install4j

我有一个SilentUpdater(使用Install4j版本6.1.4构建),它将日志文件写入我通过VM参数配置的某个目录:checkDefaultOverlap: function(default_shifts, done) { async.each(default_shifts, function(default_shift, next) { var subarray = default_shifts.slice(default_shifts.indexOf(default_shift) + 1, default_shifts.length - 1); async.each(subarray, function(default_shift2, next) { default_shift.week_days.map(function(day1) { default_shift2.week_days.map(function(day2) { if (day1 === day2 && default_shift.start <= default_shift2.end && default_shift2.start <= default_shift.end) next({error: 'The shifts overlap!'}); }); }); next(); }, function(err) { if (err) next(err); else next(null); }); }, function(err) { if (err) return done(err); else return done(null); }); } }

但是此过程始终会覆盖先前的更新程序日志。所以我在考虑用执行时间戳写日志文件。我尝试过使用-Dinstall4j.debug=true -Dinstall4j.keepLog=true -Dinstall4j.alternativeLogfile=${installer:sys.installationDir}/log/updater.logsys.date变量,如下所示: sys.time

但即使更新程序在不同时间执行,我仍然拥有相同的文件。在阅读有关这两个变量的文档后,我认为它们是在安装程序构建过程中定义的,并且始终是相同的。

那么,有没有其他方法可以通过VM参数或在执行更新过程期间获得具有当前时间戳的日志文件?

1 个答案:

答案 0 :(得分:0)

从install4j 6.1.4开始,没有解决此问题的方法。我已将此添加到问题跟踪器中。

更新2019-02-05

在install4j 8中,您将能够在#include <iostream> #include <iomanip> using namespace std; // ... long double d = 0.000098765; // ... stringstream ss2; ss2 << setprecision(10) << fixed << d; cout << ss2.str() << endl; 或其新别名-Dinstall4j.alternativeLogfile中使用安装程序变量。将不再需要传递-Dinstall4j.log

对于时间戳,install4j 8包含安装程序变量-Dinstall4j.keepLog=true${installer:sys.date}${installer:sys.time},其中包含安装程序启动的时间。