关于LOG的输出

Android之Retrofit实现Log日志输出 我们知道,Retrofit是基于OkHttp发展而来,因此在Retrofit中设置日志打印,就是在OkHttp设置。 1、添加依赖 compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' 2、添加打印代码 HttpLoggingInterceptor:http日志拦截器 方法1:自定义输出日志格式 HttpLoggingIn... 阅读详情
在要输出的类xxxAction的开头写下:
private ABC logger = ABC.getInstance(xxxAction.class);
在要输出信息类的方法中写入:
StackTraceElement stack[] = (new Throwable()).getStackTrace();
logger.info("Now in xxxx"+" And this method called by: "+stack[1].toString());

或者

StackTraceElement stack[] = (new Throwable()).getStackTrace();
for(int i=1;i<=stack.length;i++){ String inStackValue = stack[i].toString(); logger.info("++++++++++++++++"+inStackValue+"+++++++++++++"); } 就可以知道相关详细信息。 实际自定义的输出LOG的类: public class ABC{ private ABC() { super(); } private String strClassName = null; private static int I_LEVEL_NONE = -1; private static int I_LEVEL_FATAL = 0; private static int I_LEVEL_ERROR = 1; private static int I_LEVEL_WARN = 2; private static int I_LEVEL_INFO = 3; private static int I_LEVEL_DEBUG = 4; private static int I_LEVEL_TRACE = 5; private static int I_LEVEL_DEFAULT = I_LEVEL_INFO; private static final String STR_LEVEL_NAME[] = { "FATAL", "ERROR", "WARN ", "INFO ", "DEBUG", "TRACE" }; private void setStrClassName(String strClassName) { this.strClassName = strClassName; } private String getStrClassName() { return strClassName; } public static ABC getInstance(Class cls) { ABC abc = new ABC (); if (cls == null) { abc .setStrClassName(null); } else { abc .setStrClassName(cls.getName()); } return abc ; } public void fatal(String strLog) { print0(I_LEVEL_FATAL, strLog); } public void error(String strLog) { print0(I_LEVEL_ERROR, strLog); } public void warn(String strLog) { print0(I_LEVEL_WARN, strLog); } public void info(String strLog) { print0(I_LEVEL_INFO, strLog); } public void debug(String strLog) { print0(I_LEVEL_DEBUG, strLog); } public void trace(String strLog) { print0(I_LEVEL_TRACE, strLog); } private void print0(int iLevel, String strLog) { print0(iLevel, getStrClassName(), strLog); } private static void print0(int iLevel, String strClassName, String strLog) { PrintWriter pw = null; try { if (strClassName == null) { return; } final String STR_FILE_NAME = getLogFileName(); pw = new PrintWriter(new FileWriter(STR_FILE_NAME, true)); print0(pw, iLevel, strClassName, strLog); } catch (IOException ioe) { } finally { if (pw != null) pw.close(); } } /** * 日付・時間と情報をログへ出力する。 * @param pw ログの出力先 * @param iLevel ログレベル * @param strClassName クラス名 * @param strLog ログへ出力する情報 */ private static void print0(PrintWriter pw, int iLevel, String strClassName, String strLog) { StringBuffer sb = new StringBuffer(); // ログレベルのチェック if (checkLogLevel(iLevel) == false) { return; } // 現在時刻の追加 final Date D_CURRENT = Calendar.getInstance().getTime(); sb.append(new SimpleDateFormat("[yyyy.MM.dd HH:mm:ss:SSS zzz] ").format(D_CURRENT)); // レベルの追加 sb.append(STR_LEVEL_NAME[iLevel] + " "); // クラス名の追加(null の時は追加しない) if (strClassName != null) { sb.append("[" + strClassName + "] "); } // 情報の追加 sb.append(strLog); pw.println(sb); pw.flush(); } } 或者直接使用 考虑到性能问题,不打算引入额外的log4j.jar包。在struts的lib中有一个commons-logging-1.0.4.jar包,现在我来说一下它的运行机制。
在Struts中对日志功能的使用遵循以下的步骤:
  1. 如 果你自己导入了log4j.jar包并在WEB-INF/classes目录下添加log4j.properties,即可启用log4j。(注意:不需 要加入commons-logging.properties文件;还有如果项目中有spring加入spring会自动加入log4j.jar包)
  2. 如果存在JDK1.4, 使用JDK1.4
  3. 如果两者都不存在,就使用SimpleLog。
现在我重点来说我们这个BSPF项目中用到的比较高性能的SimpleLog类的具体配置。
其实很简单,只要在你的WEB-INF/classes目录中加入两个properties配置文件就OK了。
###这个是commons-logging.properties文件
###指定你要用的日志类
org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog###这个是simplelog.properties文件
###首先指定你的输出级别:必须为"trace", "debug", "info", "warn", "error", or "fatal"
###从trace到fatal级别越来越高,低级包括高级别的日志输出,默认为info
org.apache.commons.logging.simplelog.defaultlog=fatal

###输出的日志消息中是否包含当前日志器实例的简写名字,默认true
org.apache.commons.logging.simplelog.showShortLogname

###输出的日志消息中是否应包含当前时间信息,默认false
org.apache.commons.logging.simplelog.showdatetime

###最后注意一点SimpleLog类把日志输出到System.err中,无需你自己配置
###虽然现在不能到文件中,但以后可以改源码或换成log4j还是比较方便,不用改程序的源码最后再给大家一个example

package org.chinacreator.test;
//必须引入的两个类
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log; public class LoggingTest {
//SimpleLog会为每个类单独输出一个日志
private static Log log = LogFactory.getLog(LoggingTest.class);
public static void main(String[] args) {
/**
*
大家注意,我没有直接去执行log.trace之类的操作,而是先作了一个判断,这是有道理的。

*
其实无非就是一个性能的问题

*
大家想想,如果我在simplelog.properties文件中org.apache.commons.logging.simplelog.defaultlog=fatal,也就是

*
指定了最高级别,那就没有fatal错误以下的日志输出到System.err了,那我还在调用log.trace方法不是一种多余

*
特别是在里面还有一个String

msg

=

"你想出现的信息",然后再log.trace(msg)这不是对内存开销更大。

*

*/
if (log.isTraceEnabled()) {
log.trace("Test logging trace level");
}
if (log.isDebugEnabled()) {
log.debug("Test logging debug level");
}
if (log.isInfoEnabled()) {
log.info("Test logging info level");
}
if (log.isWarnEnabled()) {
log.warn("Test logging warn level");
}
if (log.isErrorEnabled()) {
log.error("Test logging error level");
}
if (log.isFatalEnabled()) {
log.fatal("Test logging fatal level");
}
}
}
三边定位的最小二乘法运用 已知:条件基站到移动台的距离D,基站的坐标(xi,yi,zi) 求:移动台的坐标(x,y,z) 运用最小二乘法的核心是找到最小二乘法的矩阵形式即 Ax=B 在本次实验中通过三边定位计算得到 A=[A;2*(xi-x1),2*(yi-y1),2*(zi-z1]; %系数矩阵A b=[b;D1^2-Di^2+xi^2+yi^2+zi^2-x1^2-y1^2-z1^2]; %增广矩阵b 阅读详情

相关推荐

工业场景实战:基于YOLO与多格式标注的传送带异物检测数据集构建指南

本文详细介绍了基于YOLO与多格式标注的传送带异物检测数据集构建方法,涵盖数据采集、标注技巧(YOLO、COCO、VOC格式)、数据增强策略及实战案例。通过工业级解决方案,有效提升异物检测准确率与效率,适用于各类工业场景。

weixin_29168393的博客 463

java中log日志的输出方法说明

java中log日志的输出方法说明

m0_72167535的博客 2743

Altium Designer许可证冲突?手把手教你用Windows防火墙彻底禁止AD联网(附详细截图)

本文详细介绍了如何通过Windows防火墙精准管控Altium Designer的网络权限,解决许可证冲突问题。通过配置入站和出站规则,彻底阻断AD的联网行为,提升软件运行效率。适用于需要稳定使用Altium Designer的工程师,附有详细截图和高级验证方法。

weixin_38170137的博客 423

log4j配置大全

一、Log4j简介 插叙:web.xml 配置 webAppRootKey pews.root 进入主题: Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志...

赵士杰的博客 331

从ATE到ATPG:基于Scan Chain的芯片制造缺陷定位实战解析

本文深入解析了从ATE到ATPG的芯片制造缺陷定位实战技术,重点介绍了Scan Chain的工作原理、异步复位触发器处理技巧以及Design Compiler中的DFT实现方法。通过实际案例展示了如何利用ATE测试数据和ATPG工具进行精确的缺陷定位,并分享了提升测试覆盖率和优化测试成本的专业技巧,为芯片测试工程师提供了宝贵的实战经验。

weixin_42527160的博客 380

反激变压器设计学习笔记

反激变压器匝比感量设计

m0_55419117的博客 5262

web工程日志文件log.properties参数说明

log4j.properties  里边的内容如下: ### set log levels ### log4j.rootLogger = debug,stdout,E log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.app...

MEMORY 459

量子密钥分发系统设计与实现(一):系统基本架构讨论

本文主要对量子密钥分发系统中的基础架构和基于系统的量子密钥协商过程进行了初步讨论,为后期系列文章进行铺垫。

量子领域相关话题 3891

log4j.properties的使用详解

最近在学习中突然看到log.properties的配置文件,感觉很复杂又看不懂,因此想着好好学一下,这里参考了两篇文档,做了个学习总结。 参考链接: https://www.cnblogs.com/lowerCaseK/p/Log_properties.html https://blog.youkuaiyun.com/hancst/article/details/78729999 首先贴上一段我工作中...

zxl13735005529的博客 463

QT5软件开发入门到项目实战PDF(配完整示例代码)(持续更新)

这是一套QT5软件开发入门到项目实战的教程,并配套了所有的案例完整代码,方便QT初学者快速入门;文章里包含了QT常用的控件使用介绍、多媒体应用、线程、网络编程、蓝牙、串口、应用发布、嵌入式设备环境部署、Android环境部署等;目前一共写了19章,627页,后续也会持续更新。

5万+

高斯过程的数学理解

G澳大利亚的过程是有益的,特别是当我们有少量数据时。当我在制造业担任数据科学家时,我们的团队使用这种算法来揭示我们接下来应该进行哪些实验条件。但是,此算法不如其他算法流行。在这篇博客中,我将通过可视化和 Python 实现来解释高斯过程 [1] 的数学背景。

gongdiwudu的专栏 3606

Java日志输出Logger,Commons Logging,Log4j的运用

日志 在编写程序的过程中,常常用System.out.println()打印出执行过程中的某些变量,观察每一步的结果与代码逻辑是否符合,然后有针对性地修改代码。改好之后又要删除打印语句,这样很麻烦。 日志就是记录程序的运行轨迹,显示关键信息,也方便快速定位解决问题。使用日志来输出程序执行的结果更加方法方便,还有以下几个好处: 设置输出样式,避免自己每次都写INFO: + message; 设置输出级别,禁止某些级别输出。例如,只输出错误日志; 重定向到文件,这样可以在程序运行结束后查看日志; 按包名控制日

个人学习笔记库,一篇一篇记录成长的足迹 9014

第三节:Vben Admin登录对接后端login接口

上一节,我们梳理的Vben Admin登录功能接口的逻辑,本节开始正式开启后端的开发后端我们采用Python的Flask项目,Flask-SQLAlchemy管理数据库模型,Flask-Migrate进行模型迁移。参考版本如下:Flask3.0.23.1.1本节,我们已经开启的后端的开发,因为是主要介绍Vben Admin的登录逻辑,所以Flask开发这里只截取了部分主要代码。

cuiwin的专栏 4189

通过属性控制log输出

通过属性控制log输出 涉及代码目录 android\system\core\include\log android\system\core\liblog 重点文件 android\system\core\include\log\log.h android\system\core\liblog\log_is_loggable.c log输出等级判断 log是否输出,在底层log输出模块代码实现中通......

卓越之路 3035

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何将编译Log输出到文件中

2018年04月02日 14:29:52异路向东阅读数:712 版权声明:本文为博主原创文章,转载前请私信博主。 https://blog.youkuaiyun.com/solid_sdu/article/details/79788729 在日常的编译工作中,经常会遇到需要将编译Log输出到文件中的情况。 那么我们应该怎样输出到文件中呢? 输出内容分为两种: 正确内容: 1> 编译错误...

weixin_42082222的博客 4062

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了

文章目录一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码 一、为啥要使用第三方Log库,而不用平台自带的Log库 首先要说明的是,在平时开发和调试中开...

Robert Zhang 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

格式化输出Log

很多系统,都需要标准化输出Log,达到直观阅读Log的目的。 这个是在Linux上测试的,如果需要移植到其他的系统,请根据系统情况实现inner_中的系统相关函数。 自己实现了一个Log输出实现,可以根据自己需要自定义输出格式。完整输出如android的规范输出: 05-16 15:21:18.501 11942 11942 F main:pid:100,tid:200 05-16...

croop520的专栏 2384

glib中的log输出重定向方法

glib中定义了自己的log,且有自己的一套使用和输出规则,方法灵活,使用方便,可以采用其提供的接口将其log信息输出到我们的OS_log中,方法介绍如下:   1,    首先定义自己的log域名,这个域名是作为后面处理的一个句柄对象,若不定义,默认为NULL; #define     G_LOG_DOMAIN   “MyClutterDomain” 2,    定义自己的回调

yunjinwang的专栏 4687

iOS Log格式化输出

#import <Foundation/Foundation.h> #import <CocoaLumberjack.h> NS_ASSUME_NONNULL_BEGIN @interface iCLogFormatter : NSObject<DDLogFormatter> @end NS_ASSUME_NONNULL_END #import ...

FIGHTING的专栏 1179

安卓破解之log信息输出开关

前言 首先是在鬼哥的群里听到好友淡然提起log打印信息的开关。淡然博客http://blog.youkuaiyun.com/zihao2012?viewmode=contents 在分析安卓程序的时候,经常使用DDMS的logcat信息输出,来查看程序的信息输出。首先log信息输出可以很方便的查看软件执行的流程,或者软件在某个时刻执行到某个关键地点,这也是程序员在开发这种常用的的方法,但是程序在发布的时候

小5 1734

android的Log输出

<br /><br />一个android应用程序运行后 并不会在 ide的控制台内输出任何信息. 不能在控制台输出。但是android提供的Log类。<br /> <br />在程序中输出日志, 使用 android.util.Log 类. <br />该类提供了若干静态方法 <br />Log.v(String tag, String msg); <br />Log.d(String tag, String msg); <br />Log.i(String tag, String msg); <br /

alley_zhang的专栏 10万+

LOG分级输出(c)

#include <stdio.h> enum loglevel { LOG_OFF = 0, LOG_ERROR, LOG_WARNING, LOG_INFO, LOG_DEBUG }; static int loglevels = LOG_INFO; #define sp_pr(level, fmt, ...) \ do { \ if (LOG_##level <= loglevels) { \

戴子天的博客 792

JNI中在C/C++源文件里输出LOG 以及Android中输出LOG

#include &lt;android/log.h&gt; #define TAG "MultiLocation" #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) 用的时候: LOGI(" TEST %lf %lf ",PDRShift.mLatitude , PDRShift.m...

yxpandjay的博客 1304

没有串口,你会如何输出log?

输出调试信息是软件开发中必不可少的调试利器,在出现bug时如果没有调试信息将会是一件令人头痛的事。本文主要介绍在嵌入式开发中用来输出log的方法,这些方法都是在实际开发过程中使用过的。嵌入...

586

unity 关闭Log输出

1. 关闭Log输出。Log 占用了很大的消耗 void Start () { Debug.unityLogger.logEnabled = false; Debug.Log("测试是否关闭了Log"); }

u011644138的博客 3193

编译输出log

android的官方代码默认不输出log,因此只能在编译的时候,自己添加参数,make 的时候,后面跟以下参数: 2>&1 | tee ./BuildLog.txt

romaticxiaoyu的专栏 1211
上一篇: javaMail使用
下一篇: 获取调用类和调用方法名-转贴
java_user
博客等级 码龄21年 11粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值