コードの作成時に派生クラスによって自動的に設定されるインスタンス変数を持つ基本抽象ロガー クラスがあります。したがって、ここに基本クラスがあります:
abstract public class CLog
{
/** Maintains the call stack level for each thread */
private static HashMap<Integer, Integer> callStackLevel = new HashMap<Integer, Integer>();
/** Static instance to be set by the derived class */
private static CLog instance = null;
/** Logs in verbose */
public static void v(String message) { if(instance != null) instance.verbose(getMessage(message)); }
/** Logs in debug */
public static void d(String message) { if(instance != null) instance.debug(getMessage(message)); }
/** Logs in informational */
public static void i(String message) { if(instance != null) instance.info(getMessage(message)); }
/** Logs in warning */
public static void w(String message) { if(instance != null) instance.warn(getMessage(message)); }
/** Logs in error */
public static void e(String message) { if(instance != null) instance.error(getMessage(message)); }
/**
* Calculates the message (with header)
*/
private static String getMessage(String message)
{
...
}
/** Constructor sets instance */
protected CLog() { instance = this; }
/** Logs in verbose */
protected abstract void verbose(String message);
/** Logs in debug */
protected abstract void debug(String message);
/** Logs in informational */
protected abstract void info(String message);
/** Logs in warning */
protected abstract void warn(String message);
/** Logs in error */
protected abstract void error(String message);
}
Android ロガーの派生クラスを作成します。コンストラクターを自動的に呼び出したいのですが、すべてのログ機能から何も結果が得られないため、これは機能していないようです。
public class AndroidLog extends CLog
{
protected static AndroidLog derived = new AndroidLog();
@Override
protected void debug(String message) {
Log.d("Crystal", message);
}
@Override
protected void error(String message) {
Log.e("Crystal", message);
}
@Override
protected void info(String message) {
Log.i("Crystal", message);
}
@Override
protected void verbose(String message) {
Log.v("Crystal", message);
}
@Override
protected void warn(String message) {
Log.w("Crystal", message);
}
}
なぜこれが機能しないのですか?基本クラスで静的関数を呼び出すと、ログが取得されません。
AndroidLog クラスを編集するだけで、または AndroidLog に依存しない CLog クラスを編集して、これを機能させることはできますか?