Comments (1)
This is supported! It's a native feature of the log
crate, so there is no need for special code in fern
to do it. Here's an example configuration using this:
fern::Dispatch::new()
.format(|out, message, record| {
out.finish(format_args!(
"{}[{}][{}][{}:{}] {}",
chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"),
record.target(),
record.level(),
record.file().unwrap_or("unknown"),
record.line().unwrap_or(0),
message
))
})
.level(log::LevelFilter::Debug)
.chain(std::io::stdout())
.chain(fern::log_file("output.log")?)
.apply()?;
This outputs logs like:
[2020-10-18][21:37:55][date_based_file_log][INFO][examples/date-based-file-log.rs:27] executing section: 0
[2020-10-18][21:37:55][date_based_file_log][DEBUG][examples/date-based-file-log.rs:29] section 0 1/4 complete.
[2020-10-18][21:37:55][date_based_file_log][DEBUG][examples/date-based-file-log.rs:31] section 0 1/2 complete.
[2020-10-18][21:37:55][date_based_file_log][DEBUG][examples/date-based-file-log.rs:33] section 0 3/4 complete.
[2020-10-18][21:37:55][date_based_file_log][INFO][examples/date-based-file-log.rs:35] section 0 completed!
I'd probably only show either target or file and not both since they're a bit redundant, but this should show the point. Let me know if that works!
To see all different metadata fields you can access like this, check the log::Record
documentation.
from fern.
Related Issues (20)
- WithFgColor doesn't match colored::Colorize's behavior
- `level_for_module` level-filtering for modules, not targets HOT 3
- Doc type: "equivalent form another crate"
- is there anyway to disable all crates log and only show log of my program? HOT 2
- Connection forcibly closed using `TcpStream` as `Box<dyn Write + Send>` HOT 2
- Getting rid of `atty` as a transitive dependency (via `colored`) HOT 25
- `SharedDispatch` type is not accessible HOT 2
- Missing list of dependancies in example HOT 2
- Syslog only logs in UTC HOT 2
- Reading from Box not possible since fern::Output::writer consumes it? HOT 2
- DateBased struct not accessible
- double free or corruption (out) HOT 1
- Feature Request: Log string configuration
- Implement log::kv Handling
- Colors and Emojis seem to break rending in Bash and Yakuake HOT 2
- switch from chrono to time HOT 2
- Different formats for differen logging targets? HOT 1
- Possible to chain more files after already intializing a logger?
- Top-level documentation suggests using 0.5 instead of 0.6 HOT 1
- Add new Linux CI HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fern.