blob: db2f4736b692c6284abea7c2bda6f12a1274c818 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
use std::fs::OpenOptions;
use slog::{o, Drain, Logger};
use slog_async::OverflowStrategy;
use crate::conf::LoggingFormat;
pub(crate) fn terminal_logger() -> Logger {
let decorator = slog_term::TermDecorator::new().build();
let drain = slog_term::FullFormat::new(decorator)
.use_file_location()
.build()
.fuse();
let drain = slog_async::Async::new(drain)
.overflow_strategy(OverflowStrategy::Block)
.chan_size(1)
.build()
.fuse();
Logger::root(drain, o!())
}
fn json_logger(filepath: &str) -> Logger {
let file = OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open(filepath)
.unwrap();
let decorator = slog_json::Json::default(file).fuse();
let drain = slog_async::Async::new(decorator).build().fuse();
Logger::root(drain, o!())
}
pub(crate) fn logger(logging_format: &LoggingFormat) -> Logger {
match logging_format {
LoggingFormat::Terminal => terminal_logger(),
LoggingFormat::Json => json_logger("logs/rocketmq_client.log"),
}
}