精华内容
下载资源
问答
  • Android Studio 解决logcat不打印日志

    千次阅读 2020-06-22 16:51:18
    好好地突然就无法打印日志了,网上搜索大家说的各种方法都不好使,浪费了太多时间。 没办法试着重启手机,搞定! 如果你也遇到这种情况,试试重启手机吧。

    好好地突然就无法打印日志了,网上搜索大家说的各种方法都不好使,浪费了太多时间。  没办法试着重启手机,搞定!
    如果你也遇到这种情况,试试重启手机吧。

    展开全文
  • 在web应用开发过程中发现部署在服务器中的应用日志突然不见了,服务器中只有tomcat或jboss的重启启动日志在打印,但应用本身设置的日志文件没有打印出来。 问题分析 该应用分支是刚从主干check下来的,而且主干...

    问题描述

    在web应用开发过程中发现部署在服务器中的应用日志突然不见了,服务器中只有tomcat或jboss的重启启动日志在打印,但应用本身设置的日志文件没有打印出来。

    问题分析

    该应用分支是刚从主干check下来的,而且主干分支在服务器上部署后是正常的,所有日志文件及文件内的日志信息都能正常打印和显示。

    根据之前经验判断由于应用部署是成功的,并且提交的新代码中只是在maven工程的pom文件中引入了新的依赖包,初步怀疑是由于新引入的包导致logback包冲突引起的。

    解决方案

    通过mvn dependency命令打出来该maven工程的依赖数,果然出现了两个不同版本的logback引用情况。

    使用exclusion命令对低版本的logback包进行排除操作,参考示例如下:

     

    <exclusions>
      <exclusion>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
      </exclusion>
    </exclusions>

     主要是logback-classic的包冲突引起的,经过唯一版本确认后重新部署应用,日志顺利打印出来。

    问题总结

    一开始以为是log4j的包冲突引起的,后来排查结果却是logback包问题,之前对这两两者区别不是很了解,经过这次问题排查也顺便学习了一下这方面的知识:

    logback介绍

    LogBack被分为3个组件,logback-core, logback-classic 和 logback-access。其中

    logback-core提供了LogBack的核心功能,是另外两个组件的基础;

    logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath;

    logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。

    由于logback在技术实现及性能上具有无可比拟的优势,现在一般都是使用logback,慢慢替代log4j。

     

    展开全文
  • log4j项目启动不打印日志

    千次阅读 2019-02-21 10:31:22
    今天继续写我的博客的时候,突然发现我的项目启动日志了,想了想,估计是properties问题。看了一下log4j.properties。 咦~没问题啊!!!再仔细看看,还是没问题。然后各种找问题,一直都没发现问题。 然后...

    今天继续写我的博客的时候,突然发现我的项目启动不打日志了,想了想,估计是properties问题。看了一下log4j.properties。

    咦~没问题啊!!!再仔细看看,还是没问题。然后各种找问题,一直都没发现问题。

    然后正好我权限过滤器出了点问题,我就去看了一下,用junit测试启动,这个问题很快找到了。

    但是...........

    我突然发现我的junit测试启动的时候是打印日志的。WTF????同样的配置文件,凭什么你junit打印?
    我不服,然后又回到这个问题上来:为什么我的项目启动不打日志,但是junit却能打日志呢??

    我是绞尽脑汁啊!!!

    百度啊!!!google(打英文显得比较有知识,哈哈)啊~~~

    好了,找不到问题,都不是他们遇到的情况。

    好咯!那就先不管呗!然后继续coding.......(其实脑袋里面还是一直在想这个问题的)

    突然我的小脑瓜灵光一闪....

    咦~~~~,测试,开发???难道是我jar包的问题????

    然后果断去pom里面看一看,结果TMD被我找到了。
    给你们看看,其实下面也有一个,那个在导包的时候我就注掉了。竟然还有漏网之鱼。

     

    赶紧记录一下。以后坚决不能踩这坑。

    展开全文
  • 部署在liunx 环境下的项目 之前一直可以正常打印日志突然之间 就不打印了 存储空间也没有满 重启项目后 日志回复了打印 输出日志是用的log4j
  • 转载自:http://blog.sina.com.cn/s/blog_6a528c550102vc1a.html Yocn博客我们在开发android应用的时候经常有这样一个情景:程序用着用着在某个地方崩溃了...,有电脑的时候去看代码的时候总是觉着哪儿都可能出错...

    转载自:http://blog.sina.com.cn/s/blog_6a528c550102vc1a.html Yocn博客

    我们在开发android应用的时候经常有这样一个情景:程序用着用着在某个地方崩溃了,每次的情况都不尽相同,这时候我们没有在电脑旁边,有电脑的时候去看代码的时候总是觉着哪儿都不可能出错。这时候我们就想如果我们能得到异常退出时候的log信息就好了。
    这时候下面这一段代码就可能相当有用了:

    package com.test.application;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.io.Writer;
    import java.lang.Thread.UncaughtExceptionHandler;
    import java.lang.reflect.Field;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;

    import android.content.Context;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.PackageManager.NameNotFoundException;
    import android.os.Build;
    import android.os.Environment;
    import android.os.Looper;
    import android.util.Log;
    import android.widget.Toast;

    import com.duole.fm.utils.Constants;

    public class CrashHandler implements UncaughtExceptionHandler {

    // 系统默认的UncaughtException处理类
    private Thread.UncaughtExceptionHandler mDefaultHandler;
    // CrashHandler实例
    private static CrashHandler instance;
    // 程序的Context对象
    private Context mContext;
    // 用来存储设备信息和异常信息
    private Map infos = new HashMap();
    
    // 用于格式化日期,作为日志文件名的一部分
    private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
    
    
    private CrashHandler() {
    }
    
    
    public static CrashHandler getInstance() {
        if (instance == null)
            instance = new CrashHandler();
        return instance;
    }
    
    
    public void init(Context context) {
        mContext = context;
        Log.e(Constants.TAG, "error : ");
        // 获取系统默认的UncaughtException处理器
        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
        // 设置该CrashHandler为程序的默认处理器
        Thread.setDefaultUncaughtExceptionHandler(this);
    }
    
    
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
        if (!handleException(ex) && mDefaultHandler != null) {
            // 如果用户没有处理则让系统默认的异常处理器来处理
            mDefaultHandler.uncaughtException(thread, ex);
        } else {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                Log.e(Constants.TAG, "error : ", e);
            }
            // 退出程序
            android.os.Process.killProcess(android.os.Process.myPid());
            System.exit(1);
        }
    }
    
    
    private boolean handleException(Throwable ex) {
        if (ex == null) {
            return false;
        }
        // 收集设备参数信息
        collectDeviceInfo(mContext);
    
        // 使用Toast来显示异常信息
        new Thread() {
            @Override
            public void run() {
                Looper.prepare();
                Toast.makeText(mContext, "很抱歉,程序出现异常,即将退出.", Toast.LENGTH_SHORT).show();
                Looper.loop();
            }
        }.start();
        // 保存日志文件
        try {
            saveCatchInfo2File(ex);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return true;
    }
    
    
    public void collectDeviceInfo(Context ctx) {
        try {
            PackageManager pm = ctx.getPackageManager();
            PackageInfo pi = pm.getPackageInfo(ctx.getPackageName(), PackageManager.GET_ACTIVITIES);
            if (pi != null) {
                String versionName = pi.versionName == null ? "null" : pi.versionName;
                String versionCode = pi.versionCode + "";
                infos.put("versionName", versionName);
                infos.put("versionCode", versionCode);
            }
        } catch (NameNotFoundException e) {
            Log.e(Constants.TAG, "an error occured when collect package info", e);
        }
        Field[] fields = Build.class.getDeclaredFields();
        for (Field field : fields) {
            try {
                field.setAccessible(true);
                infos.put(field.getName(), field.get(null).toString());
                Log.d(Constants.TAG, field.getName() + " : " + field.get(null));
            } catch (Exception e) {
                Log.e(Constants.TAG, "an error occured when collect crash info", e);
            }
        }
    }
    
    
    private String saveCatchInfo2File(Throwable ex) {
    
        StringBuffer sb = new StringBuffer();
        for (Map.Entry entry : infos.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            sb.append(key + "=" + value + "\n");
        }
    
        Writer writer = new StringWriter();
        PrintWriter printWriter = new PrintWriter(writer);
        ex.printStackTrace(printWriter);
        Throwable cause = ex.getCause();
        while (cause != null) {
            cause.printStackTrace(printWriter);
            cause = cause.getCause();
        }
        printWriter.close();
        String result = writer.toString();
        sb.append(result);
        try {
            long timestamp = System.currentTimeMillis();
            String time = formatter.format(new Date());
            String fileName = "crash-" + time + "-" + timestamp + ".log";
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                String path = Constants.SDPATH + "/crash/";
                File dir = new File(path);
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                FileOutputStream fos = new FileOutputStream(path + fileName);
                fos.write(sb.toString().getBytes());
                // 发送给开发人员
                sendCrashLog2PM(path + fileName);
                fos.close();
            }
            return fileName;
        } catch (Exception e) {
            Log.e(Constants.TAG, "an error occured while writing file...", e);
        }
        return null;
    }
    
    
    private void sendCrashLog2PM(String fileName) {
        if (!new File(fileName).exists()) {
            Toast.makeText(mContext, "日志文件不存在!", Toast.LENGTH_SHORT).show();
            return;
        }
        FileInputStream fis = null;
        BufferedReader reader = null;
        String s = null;
        try {
            fis = new FileInputStream(fileName);
            reader = new BufferedReader(new InputStreamReader(fis, "GBK"));
            while (true) {
                s = reader.readLine();
                if (s == null)
                    break;
                // 由于目前尚未确定以何种方式发送,所以先打出log日志。
                Log.i("info", s.toString());
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally { // 关闭流
            try {
                reader.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    }

    在Application里面加上下面这句:
    CrashHandler catchHandler = CrashHandler.getInstance();
    catchHandler.init(getApplicationContext());

    这样就可以随时得到crash时候的log信息了

    展开全文
  • 最近开发时突然感觉每次需要打印日志信息时都要在当前类中定义一个Logger对象特别的麻烦,所以就在想能能使用一个日志工具类里面定义一些打印日志的静态方法,这样在需要打印日志时直接使用工具类的静态方法。...
  • 2,然而,在突然有一天,你发现flink控制台打印日志不受你的控制了。 花费时间解决冲突...... 然而一点效果都没有。。。。 3,解决办法 1)肯定是包冲突,搜索除log4j意外的日志打印,比如 (下面的...
  • 这种情况多见于oppo手机,安装调试几次,就不打印log了。 先尝试这种方式,行不通了再看第二和第三种。 解决方案二: 调整logcat的输出等级,比如从error调到info,并且选择不过滤。详细步骤看下面这篇文章,他...
  • 开发反馈,突然在本地启动起来了,表象特征就是在本地IDEA上运行时,进程卡住也退出,应用启动时加载相关组件的日志输出。症状如下图:问题分析因为没有有用的日志信息,所以能从日志...
  • 基本上2秒左右打印一次,在调试的时候log刷刷的,从日志的内容来看,好像是关于百度定位的,因为我的手机上软件比较多,所以能一一卸载验证(这种方法很蠢吧),而且很多应用都用到了百度定位sdk,但是一直没静下...
  • 我个人遇到的bug:我做SSM框架项目的时候,用idea去做的,基本框架也已经搭好了,后来遇到了个bug,就是tomcat启动了一直,控制台还一直打印日志文件,代码里也看了没有错误,也按照网上说的什么删除tomcat9,jre然后...
  • 最近突然发现个好东西---logging,以前写日志还是自己写的辛辛苦苦的写print,以及write写到文件中去。最近有个需求要自动切换日志,这个想了好久都没有想到实现方式,就百度了一下。python自己就带了这么些库,这就...
  • 昨日在公司部署新程序的时候,突然发现用的以前公司的数据库连接池程序(知道老外写好后原公司员工有没有改动)有很多部署合理的地方(也可能是我使用有问题)  (1)启动时控制台打印----竟把数据库配置文件...
  • 最近突然意识到日志是很好滴debug工具,所以研究了一下yii的日志配置,想想应该还会有像我这样的小白懂这些问题的,就分享一下了。 通过配置日志文件,方便我们快速的定位问题,config/pubilc.php 中配置,这个...
  • <div><p>今天跑通了之后,没有使用预训练权重,...打印日志也没有发现有出错,请问这是怎么回事呢?</p><p>该提问来源于开源项目:WongKinYiu/PyTorch_YOLOv4</p></div>
  • 当ScheduledThreadPoolExecutor碰到 Uncaught Exception 时的源码处理逻辑。我们自己在使用这个线程池时,需要注意对任务运行时异常的处理(最简单的方式就是在最外层加个try-catch,然后捕捉打印日志)。 ...
  • 偶然的机会接触Android framwork层的开发,某天突然任务很忙,logcat却打印不正常了,那分钟非常急呀,在网上找了很多办法都行不通,后来将show only selected application改为No Filters,日志记录的最后一行显示一...
  • 注意:在 log 里面看到三方应用打印了 Java 层的进程异常堆栈,并一定表示应用就发生 crash 了。应用自身可能 catch 了这些 exception ,只是把堆栈打印出来,并没有 crash。应用突然闪退,有可能是发生 crash,也...
  • 生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志, 问题是 堆栈信息呢? 哪里报的NPE在哪??? 信息如下: [ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TASK-1919-33805-97659]:[156] - wait task ...
  • 我们的系统,已经接入阿里云的日志服务很长一段时间了,存了数以TB...日志级别规范日志级别我们已经有了较好的规范了只在必要时打印日志面对确定因素时(Warning/Info)订单、支付、物流等核心业务场景(Info)程序...
  • chrome console 打印异常,出来

    千次阅读 2018-07-12 01:23:48
    那么到底是什么原因导致了我的控制台无法打印日志呢? 难道console.log方法被重写了?后来又赶紧查看了一下,没有这回事!!! 突然,我眼睛一小心瞥见了什么!!!谷歌这点做的太特么坑了吧!...
  • 我们的系统,已经接入阿里云的日志服务很长一段时间了,存了数以TB...日志级别规范日志级别我们已经有了较好的规范了只在必要时打印日志面对确定因素时(Warning/Info)订单、支付、物流等核心业务场景(Info)程序...
  • 今天碰到一个AS不打印日志的问题 报错信息为: read: Unexpected EOF 经过查询,发现在Android8.0后连接电脑只要日志打印频繁且量大就经常看到错误[ read: unexpected EOF! ] 只要出现这个错误时Logcat就停止打印...
  • 解决日志输出只到Initializing Spring ...前几天一个springboot突然不打印springFramework的debug日志了 也就是 <logger name="org.springframework.boot" level="debug" additivity="false"> ...
  • 在控制台实时写一条打印日志检查下,却又是正常打印的,_(¦3」∠)_ ,如下图 最后才发现了,原来是自己手贱,在调试的时候,小心按出鼠标右键,然后点了过滤器,把自己写的整个js文件都过滤掉了...
  • 最近用ARC建立项目,一切都很顺利,到后期的一个版本中突然出现了NSLog在控制台输出日志信息,调试时给任何异常信息。堆栈的信息都没有用。 痛苦了一阵子,凭经验猜错误的原因,虽然基本能够找到,但是效率低了...
  • 安卓开发,经常在调试的时候,LogCat突然不打印,尤其是点了clear Log 之后。今天看到一个解决方法,待测试,如下:    先在Devices中选中一下设备,然后点那个相机标志(screen capture),然后点down,然后再...
  • 问题解决-项目启动到一半突然卡住动 今天写完一个业务准备用postman调试,出错改完bug后再次启动,发现日志打印到一半不再往下走了 尝试了各种解决办法:重新导入项目、删除target目录、重启IDE,都没得到解决。...
  • 我们某个系统突然发现日志输出有毛病,后来一看,居然是因为python日志不是进程安全的,后来找到了一个并发包,from cloghandler import ConcurrentRotatingFileHandler就这个东西,但是多天以后,发现,日志还是有...
  • 写代码突然接到客服那边的消息,说接到大量用户投诉,页面打开了。小齐心里一咯噔,最近就自己发布了新代码,加了一个新功能,不会是那部分代码出问题了吧?!!假装看不见赶紧切流到备库,回滚代码。然后查看错误...

空空如也

空空如也

1 2 3 4 5 6
收藏数 109
精华内容 43
关键字:

日志突然不打印了