Skip to content

Commit

Permalink
区分stdout和stderr
Browse files Browse the repository at this point in the history
  • Loading branch information
owent committed Jul 15, 2023
1 parent 143dfe1 commit 97c711a
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/exec/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "xresloader-dump-bin"
version = "2.1.2"
version = "2.1.3"
authors = ["owent <[email protected]>"]
license = "MIT"
description = "A tool to dump human readable text from binary output of xresloader"
Expand Down
83 changes: 67 additions & 16 deletions src/exec/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,26 +51,77 @@ struct DumpOptions {
plain: bool,
}

struct Logger {
stdout: Box<env_logger::Logger>,
stderr: Box<env_logger::Logger>,
}

impl Logger {
pub fn new(max_log_level: log::LevelFilter) -> Self {
Self {
stdout: Box::new(
env_logger::Builder::new()
.filter_level(max_log_level)
.format_level(false)
.format_module_path(false)
.format_target(false)
.format_timestamp(None)
.target(env_logger::Target::Stdout)
.parse_default_env()
.build(),
),
stderr: Box::new(
env_logger::Builder::new()
.filter_level(log::LevelFilter::Warn)
.format_level(false)
.format_module_path(false)
.format_target(false)
.format_timestamp(None)
.target(env_logger::Target::Stderr)
.parse_default_env()
.build(),
),
}
}

pub fn init(self) -> Result<(), log::SetLoggerError> {
let max_level = self.stdout.filter();
let r = log::set_boxed_logger(Box::new(self));

if r.is_ok() {
log::set_max_level(max_level);
}

r
}
}

impl log::Log for Logger {
fn enabled(&self, metadata: &log::Metadata) -> bool {
self.stdout.enabled(metadata) || self.stderr.enabled(metadata)
}

fn log(&self, record: &log::Record) {
if self.stderr.enabled(record.metadata()) {
self.stderr.log(record);
} else if self.stdout.enabled(record.metadata()) {
self.stdout.log(record);
}
}

fn flush(&self) {
self.stdout.flush();
self.stderr.flush();
}
}

fn main() {
let args = DumpOptions::parse();

if args.debug {
env_logger::Builder::new()
.filter_level(log::LevelFilter::Debug)
.format_level(true)
.format_module_path(false)
.format_target(false)
.parse_default_env()
.init();
let _ = Logger::new(log::LevelFilter::Debug).init();
} else {
env_logger::Builder::new()
.filter_level(log::LevelFilter::Info)
.format_level(false)
.format_module_path(false)
.format_target(false)
.format_timestamp(None)
.parse_default_env()
.init();
let _ = Logger::new(log::LevelFilter::Info).init();
}

let mut desc_index = FileDescriptorIndex::new();
Expand Down Expand Up @@ -152,7 +203,7 @@ fn main() {
info!("data count: {}", data_blocks.header.count);
info!("hash code: {}", data_blocks.header.hash_code);
info!("description: {}", data_blocks.header.description);
if data_blocks.header.data_source.len() > 0 {
if !data_blocks.header.data_source.is_empty() {
info!("data source:");
}
for data_source in &data_blocks.header.data_source {
Expand Down
2 changes: 1 addition & 1 deletion src/protocol/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "xresloader-protocol"
version = "2.1.2"
version = "2.1.3"
authors = ["owent <[email protected]>"]
license = "MIT"
description = "A tool to dump human readable text from binary output of xresloader"
Expand Down
2 changes: 1 addition & 1 deletion src/protocol/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn codegen() -> protobuf_codegen::Codegen {
codegen
.protoc_path(&protoc_bin_vendored::protoc_bin_path().unwrap())
.out_dir("src/proto")
.inputs(&[
.inputs([
"../../third_party/xresloader-protocol/core/pb_header_v3.proto",
"../../third_party/xresloader-protocol/core/extensions/v3/xresloader.proto",
"../../third_party/xresloader-protocol/core/extensions/v3/xresloader_ue.proto",
Expand Down

0 comments on commit 97c711a

Please sign in to comment.