Skip to content

Commit 9edb26e

Browse files
committed
Port to slog v2
1 parent 9c56d42 commit 9edb26e

File tree

6 files changed

+72
-30
lines changed

6 files changed

+72
-30
lines changed

.gitignore

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
target/
2-
Cargo.lock
1+
/target
2+
/Cargo.lock
3+
/tags
4+
/.cargo
5+
/rusty-tags.vi

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Change Log
2+
All notable changes to this project will be documented in this file.
3+
4+
The format is based on [Keep a Changelog](http://keepachangelog.com/)
5+
and this project adheres to [Semantic Versioning](http://semver.org/).
6+
7+
8+
## 2.0.0-1.0 - 2017-03-05
9+
### Changed
10+
11+
* Ported to slog v2

Cargo.toml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
name = "slog-envlogger"
4-
version = "0.5.0"
4+
version = "2.0.0-1.0"
55
authors = ["The Rust Project Developers", "Dawid Ciężarkiewicz <dpc@dpc.pw>"]
66
license = "MIT/Apache-2.0"
77
readme = "README.md"
@@ -16,10 +16,12 @@ Port of de facto standard logger implementation for Rust, to `slog-rs` framework
1616
path = "src/lib.rs"
1717

1818
[dependencies]
19-
slog = "1"
19+
slog = ">= 2.0.0-1.0, < 2.0.0-2"
2020
regex = "0.1"
21-
slog-term = "1.0.0-alpha8"
22-
slog-stdlog = "1.0.0-alpha8"
21+
slog-term = ">= 2.0.0-1, < 2.0.0-2"
22+
slog-stdlog = ">= 2.0.0-0, < 2.0.0-1"
23+
slog-scope = ">= 2.0.0-1, < 2.0.0-2"
24+
slog-async = ">= 2.0.0-1, < 2.0.0-2"
2325
log = "0.3.6"
2426

2527
[[test]]

examples/proper.rs

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,45 @@
11
extern crate slog_stdlog;
22
extern crate slog_envlogger;
33
extern crate slog_term;
4+
extern crate slog_scope;
5+
extern crate slog_async;
46

57
/// Import longer-name versions of macros only to not collide with legacy `log`
6-
#[macro_use(slog_error, slog_info, slog_trace, slog_log, o)]
8+
#[macro_use(slog_error, slog_info, slog_trace, slog_log, o, slog_record,
9+
slog_record_static, slog_b)]
710
extern crate slog;
811

9-
use slog::DrainExt;
12+
use slog::Drain;
13+
use std::sync::Arc;
1014

1115
#[macro_use]
1216
extern crate log;
1317

1418
fn main() {
15-
let term = slog_term::streamer().build();
16-
let drain = slog_envlogger::new(term);
19+
let drain =
20+
slog_async::Async::default(
21+
slog_envlogger::new(
22+
slog_term::CompactFormat::new(
23+
slog_term::TermDecorator::new()
24+
.stderr().build()
25+
).build().fuse()
26+
));
1727

18-
let root_logger = slog::Logger::root(drain.fuse(), o!("build" => "8jdkj2df", "version" => "0.1.5"));
28+
let root_logger = slog::Logger::root(Arc::new(drain.fuse()), o!("build" => "8jdkj2df", "version" => "0.1.5"));
1929

20-
slog_stdlog::set_logger(root_logger.clone()).unwrap();
30+
slog_stdlog::init().unwrap();
2131

22-
slog_error!(root_logger, "slog error");
23-
error!("log error");
24-
slog_info!(root_logger, "slog info");
25-
info!("log info");
26-
slog_trace!(root_logger, "slog trace");
27-
trace!("log trace");
32+
//slog_scope::set_global_logger(root_logger.clone().into_erased());
33+
slog_scope::scope(
34+
root_logger.clone().into_erased(),
35+
|| {
36+
37+
slog_error!(root_logger, "slog error");
38+
error!("log error");
39+
slog_info!(root_logger, "slog info");
40+
info!("log info");
41+
slog_trace!(root_logger, "slog trace");
42+
trace!("log trace");
43+
}
44+
);
2845
}

examples/scopes.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
extern crate slog_stdlog;
22
extern crate slog_envlogger;
3+
extern crate slog_scope;
34

45
#[macro_use(o)]
56
extern crate slog;
@@ -12,8 +13,8 @@ fn main() {
1213

1314
error!("log error");
1415

15-
slog_stdlog::scope(
16-
slog_stdlog::with_current_logger(|l| l.new(o!("scope-extra-data" => "data"))),
16+
slog_scope::scope(
17+
slog_scope::logger().new(o!("scope-extra-data" => "data")),
1718
|| foo()
1819
);
1920

@@ -24,8 +25,8 @@ fn foo() {
2425
info!("log info inside foo");
2526

2627
// scopes can be nested!
27-
slog_stdlog::scope(
28-
slog_stdlog::with_current_logger(|l| l.new(o!("even-more-scope-extra-data" => "data2"))),
28+
slog_scope::scope(
29+
slog_scope::logger().new(o!("even-more-scope-extra-data" => "data2")),
2930
|| bar()
3031
);
3132
}

src/lib.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,12 @@ extern crate regex;
7676
extern crate slog;
7777
extern crate slog_term;
7878
extern crate slog_stdlog;
79+
extern crate slog_scope;
80+
extern crate slog_async;
7981
extern crate log;
8082

8183
use regex::Regex;
82-
use std::{env, result};
84+
use std::{env, result, sync};
8385
use std::cell::RefCell;
8486
use slog::*;
8587

@@ -205,9 +207,11 @@ impl<T : Drain> EnvLogger<T> {
205207
}
206208
}
207209

208-
impl<T : Drain> Drain for EnvLogger<T> {
209-
type Error = T::Error;
210-
fn log(&self, info: &Record, val : &OwnedKeyValueList) -> result::Result<(), T::Error> {
210+
impl<T : Drain> Drain for EnvLogger<T>
211+
where T : Drain<Ok=()> {
212+
type Err = T::Err;
213+
type Ok = ();
214+
fn log(&self, info: &Record, val : &OwnedKVList) -> result::Result<(), T::Err> {
211215
if !self.enabled(info.level(), info.module()) {
212216
return Ok(());
213217
}
@@ -253,10 +257,14 @@ pub fn new<T : Drain>(d : T) -> EnvLogger<T> {
253257
/// anything that `slog` has to offer, so I highly encourage to use `new()`
254258
/// instead and explicitly configure your loggers.
255259
pub fn init() -> std::result::Result<(), log::SetLoggerError> {
256-
let term = slog_term::streamer().full().sync().stderr().build();
257-
let drain = new(term);
258-
259-
slog_stdlog::set_logger(Logger::root(drain.fuse(), o!()))
260+
let drain = slog_term::CompactFormat::new(
261+
slog_term::TermDecorator::new().stderr().build()
262+
).build();
263+
let drain = new(drain);
264+
let drain = sync::Mutex::new(drain.fuse());
265+
266+
slog_scope::set_global_logger(Logger::root(drain.fuse(), o!()).into_erased());
267+
slog_stdlog::init()
260268
}
261269

262270
/// Parse a logging specification string (e.g: "crate1,crate2::mod3,crate3::x=error/foo")

0 commit comments

Comments
 (0)