如果日志过长,如何打印可以让日志不被截断?

代码调试过程中,如果日志过长,如何打印可以让日志不被截断,并且导出全量的日志信息

阅读 1.1k
2 个回答

为了更全面地解决日志过长问题,可以结合使用上述方法。例如,将日志信息分段打印,同时将完整日志导出到文件中。这种方式既能方便实时调试,也能确保不丢失任何日志信息。

请参考主要代码如下:

public class LogUtil {
    private static final int MAX_LOG_LENGTH = 1000; // 设定单次日志打印的最大长度
    private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "LogUtil");
    private static FileLogger fileLogger;

    public static void init(Context context, String filePath) {
        fileLogger = new FileLogger(context, filePath);
    }

    public static void logLongMessage(String tag, String message) {
        if (fileLogger != null) {
            fileLogger.logToFile(message); // 将完整日志导出到文件
        }
        if (message.length() > MAX_LOG_LENGTH) {
            int start = 0;
            while (start < message.length()) {
                int end = Math.min(start + MAX_LOG_LENGTH, message.length());
                HiLog.info(LABEL, message.substring(start, end));
                start = end;
            }
        } else {
            HiLog.info(LABEL, message);
        }
    }

    // 使用示例
    public static void main(String[] args) {
        Context context = ...; // 获取当前上下文
        LogUtil.init(context, "app_log.txt");
        String longMessage = "Your very long message here...";
        LogUtil.logLongMessage("MyApp", longMessage);
    }
}

这样,既可以通过分段打印避免日志被截断,又可以将完整日志保存到文件中,确保日志信息的完整性。

对于IDE控制台日志输出的设置:

File-\>setting-\>Editor-\>general-\>Console下,有个override console cycle buffer size选项,在里面调大容量即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进