classTest{ LogConfiguration config = new LogConfiguration.Builder() .logLevel(BuildConfig.DEBUG ? LogLevel.ALL // Specify log level, logs below this level won't be printed, default: LogLevel.ALL : LogLevel.NONE) .tag("MY_TAG") // Specify TAG, default: "X-LOG" .enableThreadInfo() // Enable thread info, disabled by default .enableStackTrace(2) // Enable stack trace info with depth 2, disabled by default .enableBorder() // Enable border, disabled by default .jsonFormatter(new MyJsonFormatter()) // Default: DefaultJsonFormatter .xmlFormatter(new MyXmlFormatter()) // Default: DefaultXmlFormatter .throwableFormatter(new MyThrowableFormatter()) // Default: DefaultThrowableFormatter .threadFormatter(new MyThreadFormatter()) // Default: DefaultThreadFormatter .stackTraceFormatter(new MyStackTraceFormatter()) // Default: DefaultStackTraceFormatter .borderFormatter(new MyBoardFormatter()) // Default: DefaultBorderFormatter .addObjectFormatter(AnyClass.class, // Add formatter for specific class of object new AnyClassObjectFormatter()) // Use Object.toString() by default .addInterceptor(new BlacklistTagsFilterInterceptor( // Add blacklist tags filter "blacklist1", "blacklist2", "blacklist3")) .addInterceptor(new MyInterceptor()) // Add other log interceptor .build(); Printer androidPrinter = new AndroidPrinter(true); // Printer that print the log using android.util.Log Printer consolePrinter = new ConsolePrinter(); // Printer that print the log to console using System.out Printer filePrinter = new FilePrinter // Printer that print(save) the log to file .Builder("<path-to-logs-dir>") // Specify the directory path of log file(s) .fileNameGenerator(new DateFileNameGenerator()) // Default: ChangelessFileNameGenerator("log") .backupStrategy(new NeverBackupStrategy()) // Default: FileSizeBackupStrategy(1024 * 1024) .cleanStrategy(new FileLastModifiedCleanStrategy(MAX_TIME)) // Default: NeverCleanStrategy() .flattener(new MyFlattener()) // Default: DefaultFlattener .writer(new MyWriter()) // Default: SimpleWriter .build(); XLog.init( // Initialize XLog config, // Specify the log configuration, if not specified, will use new LogConfiguration.Builder().build() androidPrinter, // Specify printers, if no printer is specified, AndroidPrinter(for Android)/ConsolePrinter(for java) will be used. consolePrinter, filePrinter); } ````
+ [logger](https://github.com/orhanobut/logger) 13.7k star
```java classTest{ 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();
其他出版物: 《引爆点》(The Tipping Point, 2000):探讨了如何通过少数关键因素引发大的变化,书中引入了“引爆点”的概念。 《决断两秒间》(Blink, 2005):研究了人们在瞬间决策中的潜意识过程和直觉判断。 《异类》(Outliers, 2008):探讨了成功背后的非凡因素,提出了“1万小时定律”等概念。 《大开眼界》(What the Dog Saw, 2009):这本书是他在《纽约客》杂志上发表的文章的集合,涵盖了各种主题。 《大卫与歌利亚》(David and Goliath, 2013):讨论了在人们认为不利的条件下如何取得成功。 《谈话的力量》(Talking to Strangers, 2019):探讨了人们在与陌生人交流时常犯的错误及其后果