Упрощаем работу с логгированием

| 08.04.2015

Решил немного упростить процесс работы с логгированием и создать для этого свой «кастомный» класс (я назвал его Logs). Нет, конечно же, нет, я не стал писать все «на низком» уровне:) Речь идет о классе, который содержит статические методы с одноименным названием, что и в классе Log. Идея такова, чтобы вызывать нужные методы логгирования, передавая только значение в качестве параметра (тег для логгирования будет добавлять метод-посредник). Кроме того, класс Logs будет содержать переменную-флаг, в зависимости от значения которой логгирование будет осуществляться или нет. Это избавит от необходимости чистить код от «логов» перед релизом приложения.

Идея не нова. Есть множество примеров подобных классов. Вы можете выбрать вариант, который больше подходит под ваши нужды.

Итак, сам класс (в проекте я помещаю его в директорию utils)

package ru.androiddocs.newscreen.utils;

import android.util.Log;

/**
 * Created by androidDocs.ru
 */
public class Logs {

    private static final String TAG = "my_tag";
    private static boolean isLogsEnabled = true;

    public static void i(String string) {
        if (isLogsEnabled) Log.i(TAG, string);
    }
    public static void e(String string) {
        if (isLogsEnabled) Log.e(TAG, string);
    }
    public static void d(String string) {
        if (isLogsEnabled) Log.d(TAG, string);
    }
    public static void v(String string) {
        if (isLogsEnabled) Log.v(TAG, string);
    }
    public static void w(String string) {
        if (isLogsEnabled) Log.w(TAG, string);
    }
}

Как видите, ничего сверхестесственного. Константа TAG, в которой содержится наш тег для логов и переменная isLogsEnabled, имеющая по умолчанию значение true, т.е. все логгировать (перед релизом проекта меняем на false).

Теперь, когда нам нужно что-то залоггировать, вызываем нужный метод так:

Logs.d("Какое-то сообщение");

Пример в контексте:

package ru.androiddocs.newscreen;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;

import ru.androiddocs.newscreen.utils.Logs;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Logs.d("onCreate");
    }
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*