aria2b icon indicating copy to clipboard operation
aria2b copied to clipboard

log時間輸出格式

Open lee850220 opened this issue 3 years ago • 5 comments

目前觀察下來log所輸出的是UTC+0的時間,希望可以依照系統時區輸出。 第一次寫nodejs,寫了一段很醜的代碼:

in common.js

function dt() {
    //return new Date().toJSON().replace('T', ' ').replace('Z', ' ').split('.')[0]
    return new Date().toLocaleDateString([],{year: "numeric",month: "2-digit",day: "2-digit"}).replace(/(\d\d)\/(\d\d)\/(\d{4})/, "$3-$1-$2") + " " + new Date().toLocaleTimeString([],{hourCycle: 'h23'})
}

in app.js

process.env.TZ = '<your timezone>'

lee850220 avatar Mar 31 '22 18:03 lee850220

function dt() {
  const d = new Date()
  d.setMinutes(d.getMinutes() - d.getTimezoneOffset())
  return d.toJSON().replace('T', ' ').replace('Z', ' ').split('.')[0]
}

改了下,JS 的 Date 是可以直接获取到系统的时区的,当然我这就不改了,要不要尝试弄个 pull request 练手下 ?

makeding avatar Mar 31 '22 19:03 makeding

或是直接使用systemd輸出到journalctl,並把app.js裡所有的logt()改成log()。(因為journalctl已經有時間戳)

[Unit]
Description=aria2 ban unwelcome clients via ipset
After=network.target aria2.service

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/node /usr/local/bin/aria2b
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=aria2b

[Install]
WantedBy=multi-user.target

vim /etc/rsyslog.conf裡加入

:programname, isequal, "aria2b" -/var/log/aria2b.log
& stop

記得重啟rsyslog

systemctl restart rsyslog

Sample Output cat /var/log/aria2b.log 2022-04-01_031900

lee850220 avatar Mar 31 '22 19:03 lee850220

就是大家运行起来的方式都有差异,这里我们就再多几个可以开关的选项感觉比较好。 目前想了下,这部分就以环境变量的形式安排比较好点?

日志前缀: Environment="OUTPREFIX=''"

不输出时间: Environment="OUTDATE=false"

之类的来安排 // 取名困难,不知道这样好不好

以及感觉还可以考虑弄个 -O 之类的选项来输出日志到指定文件(然而不知道 logrotate 要怎么安排了,不知道有没有现成项目来完成这个)

makeding avatar Mar 31 '22 19:03 makeding

以我的系統環境為例(UTC+8) 我嘗試使用原本的函數印出來的結果,看起來是直接印出格林威治時間(UTC+0) image

lee850220 avatar Mar 31 '22 19:03 lee850220

以我的系統環境為例(UTC+8) 我嘗試使用原本的函數印出來的結果,看起來是直接印出格林威治時間(UTC+0) image

印象中我使用 .toJSON() 只是因为这个格式出来的直观点,然后 UTC 时间对于我来说没什么影响然后当时就懒得加时区回来了,修复后的代码可以参考上面的 comments

以及尝试下 fork 项目然后发个 pull request ? 我觉得这样可以练练手熟悉下 Git(hub)

makeding avatar Mar 31 '22 20:03 makeding

done #b024962

makeding avatar Aug 26 '23 11:08 makeding