Androidのログクラスのログ出力とファイルに保存します

android.util.Log従来の方法は以下の5つがあります。 

Log.v()Log.d()Log.i()Log.w()とLog.e()。VERBOSE、DEBUG、INFO、WARN、ERRORに対応する最初の文字。 

1、Log.vデバッグ色が黒である、いかなるメッセージが出力されない、V冗長代表ったらしいここで意味する、すなわち通常使用Log.vあります(「」、「」); 

2は、Log.d出力色は青で、デバッグ出力にのみ意味が、彼はそれがDDMSのLogcatラベルで選択することができフィルタリング、出力の上部になります。

3、緑、一般的な情報提供の情報メッセージのLog.i出力、およびそれが出力Log.v Log.d情報が、私、WとEが表示されている情報はありません。

図4は、Log.wがオレンジ色に意味、警告警告として見ることができ、我々はまた、それの後に出力Log.e情報を選択しながら、一般的なAndroidの最適化されたコードに注意を払う必要があります。 

5、Log.eは赤、それは赤いエラーメッセージだけにここに示されている、考えられるエラーのエラーで、私たちは情報を表示するには、慎重な分析を必要とするこれらのエラーが積み重なります。

MyLog {クラス公開
    
    trueにプライベート静的ブール= MYLOG_SWITCH; //ログファイルメインスイッチ
    プライベート静的ブールMYLOG_WRITE_TO_FILE =真; //ログファイルを書き込むには、スイッチ
    プライベート静的char型のMYLOG_TYPE =「V」 ; // 出力のみ代表Wインプットログの種類を、アラーム情報などは、Vはすべての情報の出力を表し
    =プライベート静的文字列MYLOG_PATH_SDCARD_DIRを「/ SDカード / kantu /ログ」; // でSDカード内のファイルパスをログ
    プライベート静的int型SDCARD_LOG_FILE_SAVE_DAYS = 0;ログファイルに日// SDカードの最大数を保存
    プライベート静的文字列のMYLOGFILEName = "Log.txtファイル" ; //このクラスのログファイル名出力
    プライベート静的てSimpleDateFormat myLogSdf =新しいてSimpleDateFormat( "YYYY-MM-DD HH:MM:SS"); //ログ出力フォーマット
    プライベート静的SimpleDateFormatのログファイル=新しいてSimpleDateFormat( "YYYY -MM-DD"); // ファイル形式ログ
    公共コンテキストコンテキストを。

    (文字列タグ、オブジェクトMSG){//警告信息Wパブリック静的ボイド
        ログ(タグ、msg.toString()、 'W'); 
    } 

    パブリック静的ボイドE(文字列タグ、オブジェクトMSG){//错误信息
        ログ(タグ、msg.toString()、 'E'); 
    } 

    パブリック静的ボイドD(文字列タグ、オブジェクトMSG){//调试信息
        ログ(タグ、msg.toString()、 'D')。
    } 

    パブリック静的ボイドI(文字列タグ、オブジェクトMSG){// 
        ログ(タグ、msg.toString()、 'I'); 
    } 

    パブリック静的ボイドV(文字列タグ、オブジェクトMSG){ 
        ログ(タグ、msg.toString()、 'V')。
    } 

    (文字列タグ、文字列テキスト){Wパブリック静的ボイド
        ログ(タグ、テキスト、「W」)。
    }

    パブリック静的ボイドE(文字列タグ、文字列テキスト){ 
        (タグ、テキスト、「E」)ログ。
    } 

    パブリック静的ボイドD(文字列タグ、文字列テキスト){ 
        (タグ、テキスト、「D」)をログ。
    } 

    パブリック静的ボイドは、I(文字列タグ、文字列テキスト){ 
        (タグ、テキスト、「I」)をログ。
    } 

    パブリック静的ボイドV(文字列タグ、文字列テキスト){ 
        (タグ、テキスト、「V」)をログ。
    } 

    / ** 
     *根据タグ、MSG和等级、输出日志
     * @paramタグ
     * @paramのMSG 
     * @paramレベル
     * / 
    プライベート静的ボイドログ(文字列タグ、文字列MSG、チャーレベル){  
        IF(MYLOG_SWITCH){//ファイルメインスイッチをログ
            IF(E '' ==レベル&&( 'E' == MYLOG_TYPE || 'V'
                Log.e(タグ、MSG)。
            }そうであれば( 'W' ==レベル&&( 'W' == MYLOG_TYPE || 'V' == MYLOG_TYPE)){ 
                Log.w(タグ、MSG)。
            }そうであれば( 'D' ==レベル&&( 'D' == MYLOG_TYPE || 'V' == MYLOG_TYPE)){ 
                Log.d(タグ、MSG)。
            }そうでなければ( 'I' ==レベル&&( 'D' == MYLOG_TYPE || 'V' == MYLOG_TYPE)){もし
                Log.i(タグ、MSG)。
            }他{ 
                Log.v(タグ、MSG)。
            } 
            IF(MYLOG_WRITE_TO_FILE)//日志写入文件开关
                writeLogtoFile(String.valueOf(レベル)、タグ、MSG)。

     * @paramテキスト
     * / 
    プライベート静的な無効writeLogtoFile(文字列のmylogtype、文字列タグ、文字列のテキスト){//新建或打开日志文件
        日nowtime =新しいDate(); 
        ストリングneedWriteFiel = logfile.format(nowtime)。
        ストリングneedWriteMessage = myLogSdf.format(nowtime)+ "" + mylogtype + "" +タグ+ "" +テキスト。
        ファイルdirPathの= Environment.getExternalStorageDirectory(); 

        dirsFileファイル=新しいファイル(MYLOG_PATH_SDCARD_DIR)。
        (!dirsFile.exists()){場合
            dirsFile.mkdirs(); 
        }  
        //Log.i( "ファイルを作成"、 "ファイルの作成")。
        ファイルファイル=新しいファイル(dirsFile.toString()、needWriteFiel + MYLOGFILEName); // MYLOG_PATH_SDCARD_DIR 
        !ファイル(あれば。
                //指定したフォルダ内のファイルを作成し
                、file.createNewFile()
            }キャッチ(例外E){ 
            } 
        } 

        試し{ 
            てFileWriter filerWriter =新しい新しいてFileWriter(trueにファイル、); //このパラメータは、後には、ファイルに接続されていません表し元のデータでは、カバーなしで
            BufferedWriterの、bufWriter =新しい新しいBufferedWriterの、(filerWriter); 
            bufWriter.write(needWriteMessage); 
            bufWriter.newLine(); 
            bufWriter.close(); 
            filerWriter.close(); 
        }キャッチ(IOExceptionをE){
            e.printStackTrace(); 
        } 
    } 

    / ** 
     *ログファイルの開発を削除
     * / 
    パブリック静的ボイドDELFILE(){//ログファイルの削除
        文字列needDelFiel = logfile.format(getDateBefore())を、
        ファイルDIRPATH = Environment.getExternalStorageDirectory( ); 
        ファイルファイル=新しい新ファイル(DIRPATH、needDelFiel MYLOGFILEName +); // MYLOG_PATH_SDCARD_DIR 
        IF(File.Exists()){ 
            File.delete(); 
        } 
    } 

    / ** 
     *について得られた現時点の日付より前の日ログファイル名を削除する必要があります
     * / 
    プライベート静的日(){getDateBefore 
        日=新しい新しいnowtime日(); 
        カレンダーになりました= Calendar.getInstance();
        now.setTime(nowtime)。
        now.set(Calendar.DATE、now.get(Calendar.DATE) - SDCARD_LOG_FILE_SAVE_DAYS)。
        now.getTime返します(); 
    } 
}

  注:また、AndroidManifest.xmlを内のファイルのパーミッションを追加する必要があります
。<使用許可アンドロイド:名= 「android.permission.WRITE_EXTERNAL_STORAGE」/>

参考まで:https://www.cnblogs.com/jeffen/p/6828569.html

 

おすすめ

転載: www.cnblogs.com/changyiqiang/p/11225350.html