Просмотр исходного кода

Watcher: use logger to write to file.

scossu 5 дней назад
Родитель
Сommit
ebc5e31dde
1 измененных файлов с 24 добавлено и 5 удалено
  1. 24 5
      src/util/watcher.lua

+ 24 - 5
src/util/watcher.lua

@@ -3,6 +3,7 @@
 local cli = require "cli"
 local plpath = require "pl.path"
 local signal = require "posix.signal"
+local sllog = require "sllog"
 local watchdog = require "watchdog"
 
 local sub = require "pocket_archive.submission"
@@ -30,12 +31,18 @@ cli.program {
 
     cli.positional "path" {"Local path of folder to watch."},
 
-    cli.flag "l,logfile" {
+    cli.flag "f,logfile" {
         "Log file.",
         type = cli.string,
         default="/dev/stderr",
     },
 
+    cli.flag "l,loglevel" {
+        "Log level: 1 = error, 2 = warning, 3 = info [default], 4 = debug.",
+        type = cli.number,
+        default = 3,
+    },
+
     cli.flag "g,gen-site" {
         "(Re-)generate the website after each submission.",
         type = cli.boolean,
@@ -49,12 +56,24 @@ cli.program {
     function(args)
         local wd = watchdog.init()
         local logfile = assert(io.open(args.logfile, "a"))
-        logfile:write("Starting Pocket Archive watchdog on ")
-        logfile:write(args.path, "\n")
+
+        local logger = sllog:init{
+            {"err",   "%T %-5L ",          "%n", logfile},
+            {"warn",  "%T %-5L ",          "%n", logfile},
+            {"info",  "%T %-5L ",          "%n", logfile},
+            {"debug", "%T %-5L%f (%S) ",   "%n", logfile},
+            timefn=(require "socket" or {}).gettime,
+            report="debug",
+            hookrequire=false,
+            level=args.loglevel,
+        }
+
+        logger:info("Starting Pocket Archive watchdog on ")
+        logger:info(args.path, "\n")
 
         wd:add(args.path, watchdog.IN_CLOSE_WRITE, function(ev)
-            logfile:write("Created new file: ", ev.name, " mask: ", ev.mask)
-            logfile:write("\n")
+            logger:info("Created new file: ", ev.name, " mask: ", ev.mask)
+            logger:info("\n")
             if ev.name:find("pkar_submission.*%.csv") then
                 -- TODO spawn subprocess
                 sub.deposit(plpath.join(args.path, ev.name), args.cleanup)