diff --git a/Cargo.lock b/Cargo.lock index 0b8694c..bfa6719 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,7 @@ dependencies = [ "lru-cache 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "memmap 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mylog 0.1.0", "openssl 0.9.7 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "reffers 0.4.2 (git+https://github.com/diwic/reffers-rs)", @@ -27,10 +28,6 @@ dependencies = [ "serde 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-envlogger 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-stdlog 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-term 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", @@ -49,14 +46,6 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "aho-corasick" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "aho-corasick" version = "0.6.2" @@ -103,7 +92,7 @@ dependencies = [ [[package]] name = "chrono" -version = "0.2.25" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -327,16 +316,6 @@ dependencies = [ "unicode-normalization 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "isatty" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "itoa" version = "0.1.1" @@ -408,14 +387,6 @@ name = "matches" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "memchr" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "memchr" version = "1.0.1" @@ -478,6 +449,16 @@ dependencies = [ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mylog" +version = "0.1.0" +dependencies = [ + "chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "native-tls" version = "0.1.1" @@ -677,18 +658,6 @@ name = "reffers" version = "0.4.2" source = "git+https://github.com/diwic/reffers-rs#22b9f2eb77f9ca97f217a098a2a50c80b9fc2a80" -[[package]] -name = "regex" -version = "0.1.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "regex" version = "0.2.1" @@ -701,11 +670,6 @@ dependencies = [ "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "regex-syntax" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "regex-syntax" version = "0.4.0" @@ -874,66 +838,6 @@ name = "slab" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "slog" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "slog-envlogger" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-stdlog 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-term 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slog-extra" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slog-stdlog" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-term 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slog-stream" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-extra 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "slog-term" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)", - "isatty 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-stream 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "smallvec" version = "0.1.8" @@ -985,15 +889,6 @@ dependencies = [ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "thread-id" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "thread-id" version = "3.0.0" @@ -1003,14 +898,6 @@ dependencies = [ "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "thread_local" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "thread_local" version = "0.3.3" @@ -1161,11 +1048,6 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "utf8-ranges" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "utf8-ranges" version = "1.0.0" @@ -1206,7 +1088,6 @@ dependencies = [ [metadata] "checksum advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a" -"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66" "checksum aho-corasick 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0638fd549427caa90c499814196d1b9e3725eb4d15d7339d6de073a680ed0ca2" "checksum base64 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "065a0ce220ab84d0b6d5ae3e7bb77232209519c366f51f946fe28c19e84989d0" "checksum bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "32866f4d103c4e438b1db1158aa1b1a80ee078e5d77a59a2f906fd62a577389c" @@ -1214,7 +1095,7 @@ dependencies = [ "checksum byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c40977b0ee6b9885c9013cd41d9feffdd22deb3bb4dc3a71d901cc7a77de18c8" "checksum cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de1e760d7b6535af4241fca8bd8adf68e2e7edacc6b29f5d399050c5e48cf88c" "checksum chan 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f93bfe971116428a9066c1c3c69a09ae3ef69432f8418be28ab50f96783e6a50" -"checksum chrono 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)" = "9213f7cd7c27e95c2b57c49f0e69b1ea65b27138da84a170133fd21b07659c00" +"checksum chrono 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "158b0bd7d75cbb6bf9c25967a48a2e9f77da95876b858eadfabaa99cd069de6e" "checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" "checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" "checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" @@ -1239,7 +1120,6 @@ dependencies = [ "checksum hyper 0.11.0-a.0 (git+https://github.com/hyperium/hyper)" = "" "checksum hyper 0.11.0-a.0 (git+https://github.com/scottlamb/hyper?branch=moonfire-on-0.11.x)" = "" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" -"checksum isatty 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fa500db770a99afe2a0f2229be2a3d09c7ed9d7e4e8440bf71253141994e240f" "checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1" "checksum itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb2f404fbc66fd9aac13e998248505e7ecb2ad8e44ab6388684c5fb11c6c251c" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" @@ -1252,7 +1132,6 @@ dependencies = [ "checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054" "checksum lru-cache 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "656fa4dfcb02bcf1063c592ba3ff6a5303ee1f2afe98c8a889e8b1a77c6dfdb7" "checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1" -"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20" "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" "checksum memmap 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "46f3c7359028b31999287dae4e5047ddfe90a23b7dca2282ce759b491080c99b" "checksum mime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5c93a4bd787ddc6e7833c519b73a50883deb5863d76d9b71eb8216fb7f94e66" @@ -1282,9 +1161,7 @@ dependencies = [ "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" "checksum redox_syscall 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd35cc9a8bdec562c757e3d43c1526b5c6d2653e23e2315065bc25556550753" "checksum reffers 0.4.2 (git+https://github.com/diwic/reffers-rs)" = "" -"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f" "checksum regex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4278c17d0f6d62dfef0ab00028feb45bd7d2102843f80763474eeb1be8a10c01" -"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957" "checksum regex-syntax 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9191b1f57603095f105d317e375d19b1c9c5c3185ea9633a99a6dcbed04457" "checksum relay 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f301bafeb60867c85170031bdb2fcf24c8041f33aee09e7b116a58d4e9f781c5" "checksum reqwest 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dfc011675ace22e9dd00d0734b1d00854859e6309c9545b6eb3e98cc088cf1eb" @@ -1305,12 +1182,6 @@ dependencies = [ "checksum serde_json 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6501ac6f8b74f9b1033f7ddf79a08edfa0f58d6f8e3190cb8dc97736afa257a8" "checksum serde_urlencoded 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "53d4ebaa8d1d4f90d1b63dfca81ccd98ac20e1e479dbae393cbaf60f6fecd8d8" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" -"checksum slog 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bab9d589681f7d6b9ca4ed5cc861779a392bca7beaae2f69f2341617415a78dc" -"checksum slog-envlogger 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dfea715bb310c33c8f90e659bce5b95e39851348b9a7e2a77495a069662def78" -"checksum slog-extra 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "511581f4dd1dc90e4eca99b60be8a692d9c975e8757558aa774f16007d27492a" -"checksum slog-stdlog 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "56cc08f40c45e0ab41dcfde0a19a22c5b7176d3827fc7d078450ebfdc080a37c" -"checksum slog-stream 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f0fee00b80a7a44f82c5cf44ba03b6dc2712f9c14469a62ad90ea0911635c5" -"checksum slog-term 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb53c0bae0745898fd5a7b75b1c389507333470ac4c645ae431890c0f828b6ca" "checksum smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "fcc8d19212aacecf95e4a7a2179b26f7aeb9732a915cf01f05b0d3e044865410" "checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013" "checksum smallvec 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3a3c84984c278afe61a46e19868e8b23e2ee3be5b3cc6dea6edad4893bc6c841" @@ -1319,9 +1190,7 @@ dependencies = [ "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" "checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" -"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03" "checksum thread-id 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4437c97558c70d129e40629a5b385b3fb1ffac301e63941335e4d354081ec14a" -"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5" "checksum thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c85048c6260d17cf486ceae3282d9fb6b90be220bf5b28c400f5485ffc29f0c7" "checksum time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "211b63c112206356ef1ff9b19355f43740fc3f85960c598a93d3a3d3ba7beade" "checksum tokio-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3d1be481b55126f02ef88ff86748086473cb537a949fc4a8f4be403a530ae54b" @@ -1340,7 +1209,6 @@ dependencies = [ "checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" "checksum url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5ba8a749fb4479b043733416c244fa9d1d3af3d7c23804944651c8a448cb87e" "checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" -"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f" "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" "checksum uuid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7cfec50b0842181ba6e713151b72f4ec84a6a7e2c9c8a8a3ffc37bb1cd16b231" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" diff --git a/Cargo.toml b/Cargo.toml index 283d291..4080799 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ log = { version = "0.3", features = ["release_max_level_info"] } lru-cache = "0.1" memmap = "0.5" mime = "0.2" +mylog = { path = "../mylog" } openssl = "0.9" parking_lot = { version = "0.3.8", features = [] } reffers = { git = "https://github.com/diwic/reffers-rs" } @@ -35,10 +36,6 @@ rustc-serialize = "0.3" serde = "0.9" serde_derive = "0.9" serde_json = "0.9" -slog = "1.5" -slog-envlogger = "0.5" -slog-stdlog = "1.1" -slog-term = "1.3" smallvec = "0.3" time = "0.1" tokio-core = "0.1" diff --git a/README.md b/README.md index acf49af..a7f46b4 100644 --- a/README.md +++ b/README.md @@ -220,7 +220,9 @@ been done for you. If not, Create --sample-file-dir=/var/lib/moonfire-nvr/sample \ --db-dir=/var/lib/moonfire-nvr/db \ --http-addr=0.0.0.0:8080 - Environment=RUST_LOG=info + Environment=TZ=:/etc/localtime + Environment=MOONFIRE_FORMAT=google-systemd + Environment=MOONFIRE_LOG=info Type=simple User=moonfire-nvr Nice=-20 @@ -249,10 +251,12 @@ and `systemctl` may be of particular interest. # Troubleshooting -While Moonfire NVR is running, logs will be written to stdout. The `RUST_LOG` -environmental variable controls the log level; `RUST_LOG=info` is recommended. -If running through systemd, try `sudo journalctl --unit moonfire-nvr` to view -the logs. +While Moonfire NVR is running, logs will be written to stdout. The +`MOONFIRE_LOG` environmental variable controls the log level; +`MOONFIRE_LOG=info` is the default. `MOONFIRE_FORMAT` controls the +logging style; options are `google` (default, like the Google glog package) +or `google-systemd` (formatted for the systemd journal). If running through +systemd, try `sudo journalctl --unit moonfire-nvr` to view the logs. If Moonfire NVR crashes with a `SIGSEGV`, the problem is likely an incompatible version of the C `ffmpeg` libraries; use the latest 2.x release diff --git a/guide/schema.md b/guide/schema.md index 38d7a2d..c29c7d9 100644 --- a/guide/schema.md +++ b/guide/schema.md @@ -84,7 +84,7 @@ Run the upgrade procedure using the new software binary (here referred to as `new-moonfire-nvr`; if you are installing from source, you may find it as `target/release/moonfire-nvr`). - $ sudo -u moonfire-nvr RUST_LOG=info new-moonfire-nvr --upgrade + $ sudo -u moonfire-nvr new-moonfire-nvr --upgrade Then run the system in read-only mode to verify correct operation: diff --git a/prep.sh b/prep.sh index 8fbe07f..cb97d80 100755 --- a/prep.sh +++ b/prep.sh @@ -225,7 +225,9 @@ ExecStart=${SERVICE_BIN} run \\ --sample-file-dir=${SAMPLES_PATH} \\ --db-dir=${DB_DIR} \\ --http-addr=0.0.0.0:${NVR_PORT} -Environment=RUST_LOG=info +Environment=TZ=:/etc/localtime +Environment=MOONFIRE_FORMAT=google-systemd +Environment=MOONFIRE_LOG=info Type=simple User=${NVR_USER} Nice=-20 diff --git a/src/cmds/check.rs b/src/cmds/check.rs index f624a96..c48cccb 100644 --- a/src/cmds/check.rs +++ b/src/cmds/check.rs @@ -98,7 +98,6 @@ struct File { pub fn run() -> Result<(), Error> { let args: Args = super::parse_args(USAGE)?; - super::install_logger(false); let (_db_dir, conn) = super::open_conn(&args.flag_db_dir, super::OpenMode::ReadOnly)?; let mut files = Vec::new(); for e in fs::read_dir(&args.flag_sample_file_dir)? { diff --git a/src/cmds/config/mod.rs b/src/cmds/config/mod.rs index 802895e..dbd06ad 100644 --- a/src/cmds/config/mod.rs +++ b/src/cmds/config/mod.rs @@ -128,7 +128,6 @@ struct Args { pub fn run() -> Result<(), Error> { let args: Args = super::parse_args(USAGE)?; - super::install_logger(false); let (_db_dir, conn) = super::open_conn(&args.flag_db_dir, super::OpenMode::ReadWrite)?; let db = Arc::new(db::Database::new(conn)?); //let dir = Arc::new(dir::Fd::open(&args.flag_sample_file_dir)?); diff --git a/src/cmds/init.rs b/src/cmds/init.rs index 16b7b26..161d02a 100644 --- a/src/cmds/init.rs +++ b/src/cmds/init.rs @@ -53,7 +53,6 @@ struct Args { pub fn run() -> Result<(), Error> { let args: Args = super::parse_args(USAGE)?; - super::install_logger(false); let (_db_dir, mut conn) = super::open_conn(&args.flag_db_dir, super::OpenMode::Create)?; // Check if the database has already been initialized. diff --git a/src/cmds/mod.rs b/src/cmds/mod.rs index b9c7ba6..49a1850 100644 --- a/src/cmds/mod.rs +++ b/src/cmds/mod.rs @@ -33,10 +33,6 @@ use docopt; use error::Error; use libc; use rusqlite; -use slog::{self, DrainExt}; -use slog_envlogger; -use slog_stdlog; -use slog_term; use std::path::Path; mod check; @@ -69,16 +65,6 @@ impl Command { } } -/// Initializes logging. -/// `async` should be true only for serving; otherwise logging can block useful work. -/// Sync logging should be preferred for other modes because async apparently is never flushed -/// before the program exits, and partial output from these tools is very confusing. -fn install_logger(async: bool) { - let drain = slog_term::StreamerBuilder::new().stderr(); - let drain = slog_envlogger::new(if async { drain.async() } else { drain }.full().build()); - slog_stdlog::set_logger(slog::Logger::root(drain.ignore_err(), None)).unwrap(); -} - #[derive(PartialEq, Eq)] enum OpenMode { ReadOnly, diff --git a/src/cmds/run.rs b/src/cmds/run.rs index b002213..c5a622a 100644 --- a/src/cmds/run.rs +++ b/src/cmds/run.rs @@ -77,8 +77,6 @@ fn setup_shutdown_future(h: &reactor::Handle) -> BoxFuture<(), ()> { pub fn run() -> Result<(), Error> { let args: Args = super::parse_args(USAGE)?; - - super::install_logger(true); let (_db_dir, conn) = super::open_conn( &args.flag_db_dir, if args.flag_read_only { super::OpenMode::ReadOnly } else { super::OpenMode::ReadWrite })?; @@ -137,5 +135,5 @@ pub fn run() -> Result<(), Error> { } info!("Exiting."); - ::std::process::exit(0); + Ok(()) } diff --git a/src/cmds/ts.rs b/src/cmds/ts.rs index 383b5ed..3afe77b 100644 --- a/src/cmds/ts.rs +++ b/src/cmds/ts.rs @@ -43,7 +43,6 @@ struct Args { pub fn run() -> Result<(), Error> { let arg: Args = super::parse_args(&USAGE)?; - super::install_logger(false); for timestamp in &arg.arg_ts { let t = recording::Time::parse(timestamp)?; println!("{} == {}", t, t.0); diff --git a/src/cmds/upgrade/mod.rs b/src/cmds/upgrade/mod.rs index 0b751a4..da53b80 100644 --- a/src/cmds/upgrade/mod.rs +++ b/src/cmds/upgrade/mod.rs @@ -86,7 +86,6 @@ fn set_journal_mode(conn: &rusqlite::Connection, requested: &str) -> Result<(), pub fn run() -> Result<(), Error> { let args: Args = super::parse_args(USAGE)?; - super::install_logger(false); let (_db_dir, mut conn) = super::open_conn(&args.flag_db_dir, super::OpenMode::ReadWrite)?; { diff --git a/src/main.rs b/src/main.rs index b1c1d12..342ce89 100644 --- a/src/main.rs +++ b/src/main.rs @@ -47,6 +47,7 @@ extern crate reffers; extern crate rusqlite; extern crate memmap; #[macro_use] extern crate mime; +extern crate mylog; extern crate openssl; extern crate parking_lot; extern crate regex; @@ -54,10 +55,6 @@ extern crate rustc_serialize; extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; -extern crate slog; -extern crate slog_envlogger; -extern crate slog_stdlog; -extern crate slog_term; extern crate smallvec; extern crate time; extern crate tokio_core; @@ -96,9 +93,9 @@ Options: Commands: check Check database integrity init Initialize a database - run Run the daemon: record from cameras and handle HTTP requests + run Run the daemon: record from cameras and serve HTTP shell Start an interactive shell to modify the database - ts Translate between human-readable and numeric timestamps + ts Translate human-readable and numeric timestamps upgrade Upgrade the database to the latest schema "; @@ -118,6 +115,14 @@ fn version() -> String { } } +fn parse_fmt>(fmt: S) -> Option { + match fmt.as_ref() { + "google" => Some(mylog::Format::Google), + "google-systemd" => Some(mylog::Format::GoogleSystemd), + _ => None, + } +} + fn main() { // Parse commandline arguments. // (Note this differs from cmds::parse_args in that it specifies options_first.) @@ -127,9 +132,18 @@ fn main() { .decode()) .unwrap_or_else(|e| e.exit()); - if let Err(e) = args.arg_command.unwrap().run() { - use std::io::Write; - writeln!(&mut ::std::io::stderr(), "{}", e).unwrap(); + let mut h = mylog::Builder::new() + .set_format(::std::env::var("MOONFIRE_FORMAT") + .ok() + .and_then(parse_fmt) + .unwrap_or(mylog::Format::Google)) + .set_spec(&::std::env::var("MOONFIRE_LOG").unwrap_or("info".to_owned())) + .build(); + h.clone().install().unwrap(); + + if let Err(e) = { let _a = h.async(); args.arg_command.unwrap().run() } { + error!("{}", e); ::std::process::exit(1); } + info!("Success."); } diff --git a/src/testutil.rs b/src/testutil.rs index a7a0875..bbbc4b5 100644 --- a/src/testutil.rs +++ b/src/testutil.rs @@ -37,10 +37,6 @@ use rusqlite; use std::env; use std::sync; use std::thread; -use slog::{self, DrainExt}; -use slog_envlogger; -use slog_stdlog; -use slog_term; use time; use uuid::Uuid; @@ -61,9 +57,6 @@ pub const TEST_CAMERA_ID: i32 = 1; /// results regardless of machine setup.) pub fn init() { INIT.call_once(|| { - let drain = slog_term::StreamerBuilder::new().async().full().build(); - let drain = slog_envlogger::new(drain); - slog_stdlog::set_logger(slog::Logger::root(drain.ignore_err(), None)).unwrap(); env::set_var("TZ", "America/Los_Angeles"); time::tzset(); });