『壹』 microlog4android如何將Android Log日誌寫到SD
我們在進行Android開發時,經常會有這種粗薯體會,由於客戶的設備型號各不相同,從而導致出現多種問題,但對於研發人員,因為沒有log日誌文件,不太容易定位問題的具體位置。所以我們急需一個能將程序日誌寫到SD卡文件里的工具,類似web的log4j那樣。這時microlog4android進入我們的視野,雖然它尚有不足,但也已能滿足大部分需求。
使用microlog4android的步驟如下:
1、下載
到http://code.google.com/p/microlog4android/downloads/list 下載microlog4android-1.0.0.jar和microlog.properties文件。
2、建立使用logger對象
private static final Logger logger = LoggerFactory.getLogger(main.class);
3、在程序的第一個activity的oncreate方法里初始化方法
PropertyConfigurator.getConfigurator(this).configure();
4、把microlog.properties文件放到assets文件夾里
注意:assets文件夾是與res文件夾平級的。
然後更改microlog.properties文件為以下內容:
microlog.level=DEBUG microlog.appender=LogCatAppender;FileAppender microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T
5、寫日誌記錄
logger.debug("這是debug信息");
6、在AndroidManifest.xml 添加寫sd卡的許可權
運行程序,然後到SD卡根目錄,可以發現有一個microlog.txt的'文件,裡面就是我們的日誌了。
更改日誌問價的路徑和名稱
有朋友問如何更改日誌文件的路徑和名稱,在網上找了一通的資料,沒找到答案,只好到https://github.com/johanlkarlsson/microlog4android 下載源代碼,經過查看源代碼的PropertyConfigurator類,發現源代碼里有這么蔽凳清一個配置參數microlog.appender.FileAppender.File,這樣應該就可以更改日誌文件的路徑和名稱了。
配置文件如下:
microlog.level=DEBUG microlog.appender=FileAppender;LogCatAppender microlog.appender.FileAppender.File=mylog.txt microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T
運行程序,發現日誌文件還是叫microlog.txt,更改名稱無效,找了各種原因都無法解決,只好反編譯我們之前下載的microlog4android-1.0.0.jar包,發現PropertyConfigurator這個類和剛剛從GIT下載的源代碼PropertyConfigurator類不一樣,microlog4android-1.0.0.jar包里的PropertyConfigurator類沒有這樣的一個宏前參數microlog.appender.FileAppender.File,只好把從GIT下載下來的源代碼,重新打個包,暫時打成microlog4android-1.1.jar,然後重新運行程序,OK,搞定,日誌文件名稱變成了我們配置的mylog.txt。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
『貳』 安卓如何將log保存到文件中
相信大家在做應用調試的時候,不可能時時通過USB線連著電腦去查看log信息,所以,將應用的log信息保存到手機本地就很有必要了,有助我們從這些log信息中提取有用的部分,以解決一些bug,下面我把網上分享的代碼中作了一些精簡,作為開發者使用,個人覺得沒必要通過用戶上傳給我們,用戶上傳的不需要這么龐大的log信息,僅僅那部分崩潰的log信息即可,可參考我的另外一篇blog:http://blog.csdn.net/weidi1989/article/details/7927273。
好了,廢話不多說,直接分享封裝好的log信息類:LogcatHelper
package com.way.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import android.content.Context;
import android.os.Environment;
/**
* log日誌統計保存
*
* @author way
*
*/
public class LogcatHelper {
private static LogcatHelper INSTANCE = null;
private static String PATH_LOGCAT;
private LogDumper mLogDumper = null;
private int mPId;
/**
*
* 初始化目錄
*
* */
public void init(Context context) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {// 優先保存到SD卡中
PATH_LOGCAT = Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separator + "miniGPS";
} else {// 如果SD卡不存在,就保存到本應用的目錄下
PATH_LOGCAT = context.getFilesDir().getAbsolutePath()
+ File.separator + "miniGPS";
}
File file = new File(PATH_LOGCAT);
if (!file.exists()) {
file.mkdirs();
}
}
public static LogcatHelper getInstance(Context context) {
if (INSTANCE == null) {
INSTANCE = new LogcatHelper(context);
}
return INSTANCE;
}
private LogcatHelper(Context context) {
init(context);
mPId = android.os.Process.myPid();
}
public void start() {
if (mLogDumper == null)
mLogDumper = new LogDumper(String.valueOf(mPId), PATH_LOGCAT);
mLogDumper.start();
}
public void stop() {
if (mLogDumper != null) {
mLogDumper.stopLogs();
mLogDumper = null;
}
}
private class LogDumper extends Thread {
private Process logcatProc;
private BufferedReader mReader = null;
private boolean mRunning = true;
String cmds = null;
private String mPID;
private FileOutputStream out = null;
public LogDumper(String pid, String dir) {
mPID = pid;
try {
out = new FileOutputStream(new File(dir, "GPS-"
+ MyDate.getFileName() + ".log"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
*
* 日誌等級:*:v , *:d , *:w , *:e , *:f , *:s
*
* 顯示當前mPID程序的 E和W等級的日誌.
*
* */
// cmds = "logcat *:e *:w | grep \"(" + mPID + ")\"";
// cmds = "logcat | grep \"(" + mPID + ")\"";//列印所有日誌信息
// cmds = "logcat -s way";//列印標簽過濾信息
cmds = "logcat *:e *:i | grep \"(" + mPID + ")\"";
}
public void stopLogs() {
mRunning = false;
}
@Override
public void run() {
try {
logcatProc = Runtime.getRuntime().exec(cmds);
mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);
String line = null;
while (mRunning && (line = mReader.readLine()) != null) {
if (!mRunning) {
break;
}
if (line.length() == 0) {
continue;
}
if (out != null && line.contains(mPID)) {
out.write((MyDate.getDateEN() + " " + line + "\n")
.getBytes());
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (logcatProc != null) {
logcatProc.destroy();
logcatProc = null;
}
if (mReader != null) {
try {
mReader.close();
mReader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
out = null;
}
}
}
}
}
記得加上許可權:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />
另外把那個時間的工具類也分享一下:
package com.way.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MyDate {
public static String getFileName() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String date = format.format(new Date(System.currentTimeMillis()));
return date;// 2012年10月03日 23:41:31
}
public static String getDateEN() {
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1 = format1.format(new Date(System.currentTimeMillis()));
return date1;// 2012-10-03 23:41:31
}
}
OK,所有事情做完之後,在我們的應用中start一下就OK了,使用完之後,記得調用一下stop:
public class GPSApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
LogcatHelper.getInstance(this).start();
}
}
『叄』 安卓手機日誌在哪裡看
安卓的手機日誌需要在手機文件管凱運理中查看。
1、首先在桌面上找到【文件管理器】圖標,點擊進入文件瀏覽頁面。
2、在文件瀏覽頁面,找到手機的系統文件夾。
3、在系統的文件夾中,找到帶有【debug_log】字元的文件。這是手機的日誌文件存放的位置,中文意思是【手機調試日誌】。
4、進入文件夾後,可以文件夾中存放著以數字串命名的文件。這就是手機的日誌文件。一般以手機日誌生成日期命名,【、log】是日誌的文件格式後綴。
5、打開任意一個日寬返志文件即可進行查看,日誌文件中記錄了手機許多信息,其中也包括一些隱私信息慎孫飢,用戶操作需要注意隱私保護。
『肆』 Android log4j如何把每條報錯的日誌存到文件里去
以DailyRollingFileAppender為例:假設每天一個日誌文件有以下設置:log4j.appender.A1=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A1.File=app.loglog4j.appender.A1.DatePattern='.'yyyy-MM-ddlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d%5p-%c-%-4r[%t]-%m%n此時生成日誌文件將位於tomcat的bin目錄下,如要將日誌文件保存在:根目肆岩錄/web-info/logs/下,個人有以下4種解決方案:1絕對路徑log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/項目/WEB-INF/logs/app.log但這種寫法靈備殲活性很差以下3中使用相同的設置原理:jvm的環境變數2:spring的Log4jConfigListener通過以下配置:webAppRootKeywebApp.:log4j.propertiesorg.springframework.web.util.Log4jConfigListenerlog4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log來解決2:使用已有jvm變數:例如:log4j.appender.logfile.File=${user.home}/logs/app.log日誌將位於:例如windows:C:\DocumentsandSettings\joe\logs\app.log3自己設置目錄,也就是在項目啟動時通過System.setProperty設置通過實現ServletContextListener來解決:例如{="log4jdir";publicvoidcontextDestroyed(){System.getProperties().remove(log4jdirkey);}publicvoidcontextInitialized(){Stringlog4jdir=servletcontextevent.getServletContext().getRealPath("/");//System.out.println("log4jdir:"+log4jdir);System.setProperty(log4jdirkey,log4jdir);}}web.xml配仿雹沖置:com.log4j.log4jlistenerlog4j.prtperties配置:log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log來解決。
『伍』 如何獲取 android 的系統日誌 logcat
直接在命令行重定向即可將logcat中輸出的日誌保存到文件中。
android開發中如果如果要將logcat中輸出信息的保存到文件中,按以下步驟:
1. 示例1: adb logcat > /sdcard/mylogcat.txt,表示將logcat的輸出重定向到/sdcard/mylogcat.txt文件中。
2. 示例2: db logcat > D:/Temp/1.txt(1.txt必須存在,才能寫入logcat內容),表示將logcat輸出的日誌保存到電腦D盤Temp目錄下的1.txt中。
『陸』 android logcat日誌在哪個文件夾裡面
如果使用的是 Eclipse 作為 IDE 的話,用 ADT 所提供的 logcat 顯示界面可以直接做到你的需求。 在編輯的位置輸入 app:your.package.name 便可以自動過濾包名為 your.package.name 的軟體輸出信息啦,如果在編寫軟體時注意了 Log.X 的使用,通過旁邊的下拉菜單還可以根據日誌的等級進行再一次進行的過濾。 TODO: 1. 打開 LogCat 2. 輸入需要的包名,如圖上的 com.android.phone 3. 根據需要選擇日誌等級,當然,如果沒有細致的 Log.X 輸出的話,推薦使用 verbose(詳細) 4. 查看過濾後的結果 5. 待解決問題後,記得將 app:com.android.phone 刪除,否則過濾會持續生效 後話:如果不嫌麻煩,在左邊的 Saved Filters 字樣旁邊有一個加號,通過它可以手動生成一個可以保存的過濾器,可涉及的過濾范圍諸如:日誌等級、進程ID、包名等。
『柒』 安卓項目如何把日誌輸出到指定文件
你們公司這樣的測試人員也要?測試人員要能抓出bug,導出log,最好能基本定位bug的出錯位置。還要寫得一手好腳本。你們這測試人員不專業啊。建議你寫個腳本吧,就幾行代碼,用busybox執行
『捌』 如何把android開發的時候把LogCat里的內容復制出來如果不能復制,要是轉儲到文件中請說明詳細步驟
logcat是android中用於輸出日誌用的
log可以保存到一個文件中,保存方式:
直接在logcat中 按 Ctlr + C 復制 注意,右鍵是沒有復制粘
使用adb命令,將logcat重定向
adb shell 進入shell模式
執行 logcat > c:log.txt 表示將logcat定向到這個文件中
『玖』 Android Studio保存log到本地
很多android的開發者都有過使用cmd+adb logcat痛苦的輸入輸出指令來保存android的日誌文件的經歷(maybe exaggerate),Android studio使用軟體內的終端避免了輸入cmd指令打開系統終端,在鍵入adb的麻煩。
首先確認電腦系統的環境變數已經配置adb,如果沒有配置,會出現以下的錯誤提示。
解決辦法是將在電腦系統的系統變數「path」中對abd進行配置,找到adb.exe所在的路徑並復制,然後將此路徑添加到系統變數的「path」中,確認後,點擊重啟Android studio即可。
當環境配置完畢後,在AS的terminal窗口中,輸入以下命令行:
如下圖示
點擊enter即開始保存log到本地,在完成log的保存後,按下ctrl+C即保存完畢。
『拾』 android開發。我希望能實時的把log寫到本地文件,請問如何實現
首先重新寫一個Log類(比如MyLog,把Log外面在封裝一遍)
第二步就是再封裝的方法里把log信息寫到本地文件
具體如下
public class MyLog {
public static void d(String msg) {
Log.d(sTag, msg);
print("d", sTag, msg);//寫入本地文件的方法
}
}