由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 打一些debug information, 这样算不算有用的optimize?
相关主题
Question about Tomcatant junit and log4j can't work together
想起几年前Re: run servlet from command line?大家愿意讨论一下log4j么
Re: 想起几年前Re: run servlet from command li多个Log4J配置文件问题
Log4j expert如何动态改变log4j的log level啊
一道面试题没回答好,学CS的看看 (转载)Can you show me ur Log4J config file?
Senior Java Developer / Senior Java ArchitectInteresting: LimpidLog
Senior Java Architect / Developer问个java logger的问题
Java system architect/lead developer opening in a cloud com (转载)请问哪位知道如何用Eclipse编译调试Glassfish么
相关话题的讨论汇总
话题: debug话题: debugflag话题: string话题: flag话题: log4j
进入Java版参与讨论
1 (共1页)
z***e
发帖数: 5393
1
就是要在production上设一个debug flag,然后把所有细节都能log下来。
问题是这个所有细节就有很多,而且很多步。
本来简单的做法就是
void debug(boolean debugFlag, String message) {
if (debugFlag) {
log(message);
}
}
那么caller就会有很多种这种:
debug(flag, "Data1: "+ ...+....+...);
debug(flag, "Data2: "+ ...+....+...);
debug(flag, "Data3: "+ ...+....+...);
但是如果没有设置debugflag,我不知道"Data1: "+ ...+....+...这种string concat
会不会执行。如果是C/C++的话,这种直接inline就好了,但是java又不能inline。
我把它改成:
void debug(boolean debugFlag, String... message) {
...

然后在里面再去concat string,这样是不是好点?
m****r
发帖数: 6639
2
这个我们家里刚刚奋战过.
java里面, 就是需要caller去检查那个flag.

【在 z***e 的大作中提到】
: 就是要在production上设一个debug flag,然后把所有细节都能log下来。
: 问题是这个所有细节就有很多,而且很多步。
: 本来简单的做法就是
: void debug(boolean debugFlag, String message) {
: if (debugFlag) {
: log(message);
: }
: }
: 那么caller就会有很多种这种:
: debug(flag, "Data1: "+ ...+....+...);

g*****g
发帖数: 34805
3
Use log4j, and write code like
if(logger.isDebugEnabled() {
logger.debug(xxx)
}
This is the standard practice. You can change logging level with
log4j configuration in runtime.

【在 z***e 的大作中提到】
: 就是要在production上设一个debug flag,然后把所有细节都能log下来。
: 问题是这个所有细节就有很多,而且很多步。
: 本来简单的做法就是
: void debug(boolean debugFlag, String message) {
: if (debugFlag) {
: log(message);
: }
: }
: 那么caller就会有很多种这种:
: debug(flag, "Data1: "+ ...+....+...);

S****h
发帖数: 558
4
I think log4j will automatically short-circuit. Your code will also do the
short-circuit on "if".

【在 z***e 的大作中提到】
: 就是要在production上设一个debug flag,然后把所有细节都能log下来。
: 问题是这个所有细节就有很多,而且很多步。
: 本来简单的做法就是
: void debug(boolean debugFlag, String message) {
: if (debugFlag) {
: log(message);
: }
: }
: 那么caller就会有很多种这种:
: debug(flag, "Data1: "+ ...+....+...);

g*****g
发帖数: 34805
5
log.debug( "a" + "b"), concatenation occurs before the debug call.
that's why you need isDebugEnabled()

【在 S****h 的大作中提到】
: I think log4j will automatically short-circuit. Your code will also do the
: short-circuit on "if".

r*****l
发帖数: 2859
6
What do you mean?

【在 S****h 的大作中提到】
: I think log4j will automatically short-circuit. Your code will also do the
: short-circuit on "if".

S****h
发帖数: 558
7
You are right.

【在 g*****g 的大作中提到】
: log.debug( "a" + "b"), concatenation occurs before the debug call.
: that's why you need isDebugEnabled()

c******n
发帖数: 4965
8
I hate this stupid idiom of
if (log.isDebugEnabled()) {
log.debug()
}
just wrap all log.debug() with AspectJ and the code will be automatically re
-written

【在 z***e 的大作中提到】
: 就是要在production上设一个debug flag,然后把所有细节都能log下来。
: 问题是这个所有细节就有很多,而且很多步。
: 本来简单的做法就是
: void debug(boolean debugFlag, String message) {
: if (debugFlag) {
: log(message);
: }
: }
: 那么caller就会有很多种这种:
: debug(flag, "Data1: "+ ...+....+...);

r*****y
发帖数: 264
1 (共1页)
进入Java版参与讨论
相关主题
请问哪位知道如何用Eclipse编译调试Glassfish么一道面试题没回答好,学CS的看看 (转载)
JBoss UDP exceptionSenior Java Developer / Senior Java Architect
How to ues log4j to send log email in the multithreaded processes as similiar with single-threadedSenior Java Architect / Developer
how to config Chaisaw to read file.log?Java system architect/lead developer opening in a cloud com (转载)
Question about Tomcatant junit and log4j can't work together
想起几年前Re: run servlet from command line?大家愿意讨论一下log4j么
Re: 想起几年前Re: run servlet from command li多个Log4J配置文件问题
Log4j expert如何动态改变log4j的log level啊
相关话题的讨论汇总
话题: debug话题: debugflag话题: string话题: flag话题: log4j