orhanobut / logger
✔️ Simple, pretty and powerful logger for android
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing orhanobut/logger in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Summary (README)
Preview
<a href="http://www.methodscount.com/?lib=com.orhanobut%3Alogger%3A2.0.0"><img src="https://img.shields.io/badge/Methods and size-198 | 18 KB-e91e63.svg"/></a>
Logger
Simple, pretty and powerful logger for android
Setup
Download
implementation 'com.orhanobut:logger:2.2.0'
Initialize
Logger.addLogAdapter(new AndroidLogAdapter());
And use
Logger.d("hello");
Output
<img src='https://github.com/orhanobut/logger/blob/master/art/logger_output.png'/>Options
Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("What a Terrible Failure");
String format arguments are supported
Logger.d("hello %s", "world");
Collections are supported (only available for debug logs)
Logger.d(MAP);
Logger.d(SET);
Logger.d(LIST);
Logger.d(ARRAY);
Json and Xml support (output will be in debug level)
Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);
Advanced
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) // (Optional) Whether to show thread info or not. Default true
.methodCount(0) // (Optional) How many method line to show. Default 2
.methodOffset(7) // (Optional) Hides internal method calls up to offset. Default 5
.logStrategy(customLog) // (Optional) Changes the log strategy to print out. Default LogCat
.tag("My custom tag") // (Optional) Global tag for every log. Default PRETTY_LOGGER
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
Loggable
Log adapter checks whether the log should be printed or not by checking this function.
If you want to disable/hide logs for output, override isLoggable method.
true will print the log message, false will ignore it.
Logger.addLogAdapter(new AndroidLogAdapter() {
@Override public boolean isLoggable(int priority, String tag) {
return BuildConfig.DEBUG;
}
});
Save logs to the file
//TODO: More information will be added later
Logger.addLogAdapter(new DiskLogAdapter());
Add custom tag to Csv format strategy
FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
How it works
<img src='https://github.com/orhanobut/logger/blob/master/art/how_it_works.png'/>More
- Use filter for a better result. PRETTY_LOGGER or your custom tag
- Make sure that wrap option is disabled
- You can also simplify output by changing settings.
- Timber Integration
// Set methodOffset to 5 in order to hide internal method calls
Timber.plant(new Timber.DebugTree() {
@Override protected void log(int priority, String tag, String message, Throwable t) {
Logger.log(priority, tag, message, t);
}
});