2011-12-09 35 views
5

Theo mặc định, lớp Đăng nhập trong android ghi nhật ký vào bảng điều khiển (logcat). Có cách nào đơn giản để viết nhật ký f.e. trong một số tập tin?Đăng nhập bằng văn bản Android vào tệp

+0

nếu bạn tham gia một cách tiếp cận ngây thơ chỉ mở một tập tin xử lý và viết ở đó - bạn sẽ được ghi vào hệ thống tập tin trên thiết bị Android của bạn, trong khi những gì bạn cần là lẽ một hệ thống tập tin trên máy dev của bạn? – justadreamer

+0

Bạn có muốn xuất các tin nhắn logcat thành một tập tin hay chỉ viết các thông điệp tường trình trong các tập tin? – SERPRO

+0

Tôi muốn xuất thông điệp logcat vào tệp. –

Trả lời

0

Redirect tất cả các thông báo lỗi để nộp sử dụng FileInputStream

+4

Làm thế nào anh ấy sẽ làm điều này? Bạn có thể cung cấp một số liên kết hoặc mã mẫu không? – Gray

1

Nếu đây chỉ dành cho các mục đích phát triển, bạn có thể gọi logcat trên thiết bị và chuyển hướng đầu ra của nó vào một tập tin. Ví dụ: adb shell logcat > log.txt.

Hoặc, bạn có thể thử chuyển hướng stdoutstderr vào một tệp, iirc tính năng này sẽ hoạt động nhưng tôi không có điện thoại của tôi để kiểm tra.

Tuy nhiên, sẽ dễ dàng hơn khi chỉ tạo lớp ghi nhật ký cơ bản của riêng bạn mà thực hiện tương tự như lớp được xây dựng nhưng cũng lưu vào tệp.

0

Trong Eclipse ddms có tùy chọn lưu nhật ký vào tệp.

3

Một lớp đơn giản Log (chỉ mục đích phát triển/thử nghiệm) tương tự như android.util.Log, nhưng đăng nhập vào sdcard. Chỉ sửa đổi mã hiện tại mới là thay đổi import android.util.Log thành import com.example.Log. Ngoài ra thêm phép như

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

package com.example.logger; 

import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import android.os.Environment; 

public class Log { 
    private static final String NEW_LINE = System.getProperty("line.separator") ; 
    public static boolean mLogcatAppender = true; 
    final static File mLogFile; 

    static { 
     mLogFile = new File(Environment.getExternalStorageDirectory(), "logs.log"); 
     if (!mLogFile.exists()) { 
      try { 
       mLogFile.createNewFile(); 
      } 
      catch (final IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     logDeviceInfo(); 
    } 

    public static void i(String TAG, String message){ 
     appendLog(TAG + " : " + message); 
     if (mLogcatAppender) { 
      android.util.Log.i(TAG, message); 
     } 
    } 

    public static void d(String TAG, String message){ 
     appendLog(TAG + " : " + message); 
     if (mLogcatAppender) { 
      android.util.Log.d(TAG, message); 
     } 
    } 

    public static void e(String TAG, String message){ 
     appendLog(TAG + " : " + message); 
     if (mLogcatAppender) { 
      android.util.Log.e(TAG, message); 
     } 
    } 

    public static void v(String TAG, String message){ 
     appendLog(TAG + " : " + message); 
     if (mLogcatAppender) { 
      android.util.Log.v(TAG, message); 
     } 
    } 

    public static void w(String TAG, String message) { 
     appendLog(TAG + " : " + message); 
     if (mLogcatAppender) { 
      android.util.Log.w(TAG, message); 
     } 
    } 

    private static synchronized void appendLog(String text) { 
     final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 

     try { 
      final FileWriter fileOut = new FileWriter(mLogFile, true); 
      fileOut.append(sdf.format(new Date()) + " : " + text + NEW_LINE); 
      fileOut.close(); 
     } 
     catch (final IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private static void logDeviceInfo() { 
     appendLog("Model : " + android.os.Build.MODEL); 
     appendLog("Brand : " + android.os.Build.BRAND); 
     appendLog("Product : " + android.os.Build.PRODUCT); 
     appendLog("Device : " + android.os.Build.DEVICE); 
     appendLog("Codename : " + android.os.Build.VERSION.CODENAME); 
     appendLog("Release : " + android.os.Build.VERSION.RELEASE); 
    } 

} 
+0

bạn hữu ích ..! –

Các vấn đề liên quan