package com.blankj.androidutilcode.activity; import android.content.Context; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.TextView; import com.blankj.androidutilcode.R; import com.blankj.androidutilcode.UtilsApp; import com.blankj.androidutilcode.base.BaseActivity; import com.blankj.utilcode.util.LogUtils; /** * <pre> * author: Blankj * blog : http://blankj.com * time : 2017/03/22 * desc : Log工具类Demo * </pre> */ public class LogActivity extends BaseActivity { private static final String TAG = "CMJ"; private TextView tvAboutLog; private LogUtils.Builder mBuilder = new LogUtils.Builder(); private String dir = ""; private String globalTag = ""; private boolean log = true; private boolean console = true; private boolean head = true; private boolean file = false; private boolean border = true; private int consoleFilter = LogUtils.V; private int fileFilter = LogUtils.V; private static final int UPDATE_LOG = 0x01; private static final int UPDATE_CONSOLE = 0x01 << 1; private static final int UPDATE_TAG = 0x01 << 2; private static final int UPDATE_HEAD = 0x01 << 3; private static final int UPDATE_FILE = 0x01 << 4; private static final int UPDATE_DIR = 0x01 << 5; private static final int UPDATE_BORDER = 0x01 << 6; private static final int UPDATE_CONSOLE_FILTER = 0x01 << 7; private static final int UPDATE_FILE_FILTER = 0x01 << 8; private Runnable mRunnable = new Runnable() { @Override public void run() { LogUtils.v("verbose"); LogUtils.d("debug"); LogUtils.i("info"); LogUtils.w("warn"); LogUtils.e("error"); LogUtils.a("assert"); } }; private static final String longStr; static { StringBuilder sb = new StringBuilder(); sb.append("len = 10400\ncontent = \""); for (int i = 0; i < 800; ++i) { sb.append("Hello world. "); } sb.append("\""); longStr = sb.toString(); } @Override public void initData(Bundle bundle) { } @Override public int bindLayout() { return R.layout.activity_log; } @Override public void initView(Bundle savedInstanceState, View view) { findViewById(R.id.btn_toggle_log).setOnClickListener(this); findViewById(R.id.btn_toggle_console).setOnClickListener(this); findViewById(R.id.btn_toggle_tag).setOnClickListener(this); findViewById(R.id.btn_toggle_head).setOnClickListener(this); findViewById(R.id.btn_toggle_border).setOnClickListener(this); findViewById(R.id.btn_toggle_file).setOnClickListener(this); findViewById(R.id.btn_toggle_dir).setOnClickListener(this); findViewById(R.id.btn_toggle_conole_filter).setOnClickListener(this); findViewById(R.id.btn_toggle_file_filter).setOnClickListener(this); findViewById(R.id.btn_log_no_tag).setOnClickListener(this); findViewById(R.id.btn_log_with_tag).setOnClickListener(this); findViewById(R.id.btn_log_in_new_thread).setOnClickListener(this); findViewById(R.id.btn_log_null).setOnClickListener(this); findViewById(R.id.btn_log_many_params).setOnClickListener(this); findViewById(R.id.btn_log_long).setOnClickListener(this); findViewById(R.id.btn_log_file).setOnClickListener(this); findViewById(R.id.btn_log_json).setOnClickListener(this); findViewById(R.id.btn_log_xml).setOnClickListener(this); tvAboutLog = (TextView) findViewById(R.id.tv_about_log); updateAbout(0); } @Override public void doBusiness(Context context) { } @Override public void onWidgetClick(View view) { switch (view.getId()) { case R.id.btn_toggle_log: updateAbout(UPDATE_LOG); break; case R.id.btn_toggle_console: updateAbout(UPDATE_CONSOLE); break; case R.id.btn_toggle_tag: updateAbout(UPDATE_TAG); break; case R.id.btn_toggle_head: updateAbout(UPDATE_HEAD); break; case R.id.btn_toggle_file: updateAbout(UPDATE_FILE); break; case R.id.btn_toggle_dir: updateAbout(UPDATE_DIR); break; case R.id.btn_toggle_border: updateAbout(UPDATE_BORDER); break; case R.id.btn_toggle_conole_filter: updateAbout(UPDATE_CONSOLE_FILTER); break; case R.id.btn_toggle_file_filter: updateAbout(UPDATE_FILE_FILTER); break; case R.id.btn_log_no_tag: LogUtils.v("verbose"); LogUtils.d("debug"); LogUtils.i("info"); LogUtils.w("warn"); LogUtils.e("error"); LogUtils.a("assert"); break; case R.id.btn_log_with_tag: LogUtils.v("customTag", "verbose"); LogUtils.d("customTag", "debug"); LogUtils.i("customTag", "info"); LogUtils.w("customTag", "warn"); LogUtils.e("customTag", "error"); LogUtils.a("customTag", "assert"); break; case R.id.btn_log_in_new_thread: Thread thread = new Thread(mRunnable); thread.start(); break; case R.id.btn_log_null: LogUtils.v(null); LogUtils.d(null); LogUtils.i(null); LogUtils.w(null); LogUtils.e(null); LogUtils.a(null); break; case R.id.btn_log_many_params: LogUtils.v("customTag", "verbose0", "verbose1"); LogUtils.d("customTag", "debug0", "debug1"); LogUtils.i("customTag", "info0", "info1"); LogUtils.w("customTag", "warn0", "warn1"); LogUtils.e("customTag", "error0", "error1"); LogUtils.a("customTag", "assert0", "assert1"); break; case R.id.btn_log_long: LogUtils.d(longStr); break; case R.id.btn_log_file: for (int i = 0; i < 100; i++) { LogUtils.file("test0 log to file"); LogUtils.file(LogUtils.I, "test0 log to file"); } break; case R.id.btn_log_json: String json = "{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css\" },{ \"name\":\"json format\" , \"site\":\"http://tools.w3cschool.cn/code/json\" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe\" }]}"; LogUtils.json(json); LogUtils.json(LogUtils.I, json); break; case R.id.btn_log_xml: String xml = "<books><book><author>Jack Herrington</author><title>PHP Hacks</title><publisher>O'Reilly</publisher></book><book><author>Jack Herrington</author><title>Podcasting Hacks</title><publisher>O'Reilly</publisher></book></books>"; LogUtils.xml(xml); LogUtils.xml(LogUtils.I, xml); break; } } private void updateAbout(int args) { switch (args) { case UPDATE_LOG: log = !log; break; case UPDATE_CONSOLE: console = !console; break; case UPDATE_TAG: globalTag = globalTag.equals(TAG) ? "" : TAG; break; case UPDATE_HEAD: head = !head; break; case UPDATE_FILE: file = !file; break; case UPDATE_DIR: if (getDir().contains("test")) { dir = null; } else { if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { dir = Environment.getExternalStorageDirectory().getPath() + System.getProperty("file.separator") + "test"; } } break; case UPDATE_BORDER: border = !border; break; case UPDATE_CONSOLE_FILTER: consoleFilter = consoleFilter == LogUtils.V ? LogUtils.W : LogUtils.V; break; case UPDATE_FILE_FILTER: fileFilter = fileFilter == LogUtils.V ? LogUtils.I : LogUtils.V; break; } mBuilder.setLogSwitch(log) .setConsoleSwitch(console) .setGlobalTag(globalTag) .setLogHeadSwitch(head) .setLog2FileSwitch(file) .setDir(dir) .setBorderSwitch(border) .setConsoleFilter(consoleFilter) .setFileFilter(fileFilter); tvAboutLog.setText(mBuilder.toString()); } private String getDir() { return mBuilder.toString().split(System.getProperty("line.separator"))[4].substring(5); } @Override protected void onDestroy() { UtilsApp.initLog(); super.onDestroy(); } }