Github url


by orhanobut

orhanobut /logger

✔️ Simple, pretty and powerful logger for android

12.3K Stars 2.0K Forks Last release: over 2 years ago (2.2.0) Apache License 2.0 144 Commits 21 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Android Arsenal Join the chat at Build Status


Simple, pretty and powerful logger for android



groovy implementation 'com.orhanobut:logger:2.2.0'


java Logger.addLogAdapter(new AndroidLogAdapter());

And use

java Logger.d("hello");



Logger.d("debug"); Logger.e("error"); Logger.w("warning"); Logger.v("verbose"); Logger.i("information");"What a Terrible Failure");

String format arguments are supported

java Logger.d("hello %s", "world");

Collections are supported (only available for debug logs)

java Logger.d(MAP); Logger.d(SET); Logger.d(LIST); Logger.d(ARRAY);

Json and Xml support (output will be in debug level)

java Logger.json(JSON\_CONTENT); Logger.xml(XML\_CONTENT);


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));


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




will print the log message,


will ignore it.

java 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

java Logger.addLogAdapter(new DiskLogAdapter());

Add custom tag to Csv format strategy ```java FormatStrategy formatStrategy = CsvFormatStrategy.newBuilder() .tag("custom") .build();

Logger.addLogAdapter(new DiskLogAdapter(formatStrategy)); ```

How it works


  • 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
    java // 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); } });


Copyright 2018 Orhan Obut Licensed 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 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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.