方法1:
我自己用的时候都是写一个Log类里面对log4j大概封装了一下!
public static void runLoger(int level,String info)
{
case 1
logger.debug(info);
.
.
.
case 4
logger.error(info);
}
然后需要写日志调用的时候,调用类似下面的
Log.runLoger(1,"print info");
方法2:
但是我看很多人用的时候,都在该类的最开始写类似下面这句
public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
然后需要写日志的时候,调用类似下面的语句写日志
logger.error("errorInfo");
但是我基本没看到我这样写的人!我感觉我这种写法很简单起码不用每个需要写日志的类都要写
上public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
这么一句!但是我看别人没这样用的。我想是不是我这样用牵扯并发写log文件问题;不知道我这样用到底
行不行?有没有什么问题啊?
我自己用的时候都是写一个Log类里面对log4j大概封装了一下!
public static void runLoger(int level,String info)
{
case 1
logger.debug(info);
.
.
.
case 4
logger.error(info);
}
然后需要写日志调用的时候,调用类似下面的
Log.runLoger(1,"print info");
方法2:
但是我看很多人用的时候,都在该类的最开始写类似下面这句
public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
然后需要写日志的时候,调用类似下面的语句写日志
logger.error("errorInfo");
但是我基本没看到我这样写的人!我感觉我这种写法很简单起码不用每个需要写日志的类都要写
上public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
这么一句!但是我看别人没这样用的。我想是不是我这样用牵扯并发写log文件问题;不知道我这样用到底
行不行?有没有什么问题啊?
解决方案 »
- 有人用过Google Calendar的API没?求救啊求救
- 如何将一台远程机器的共享文件夹里的指定内容copy到另一台远程机器的指定目录下
- SOCKET怎样写
- 一个对JAVA各种技术比较迷惑的人的问题
- 求教高手,怎样能在代码里动态的import外面的包
- 那里错了?为什么不显示图片
- Applet为什么能在JBuiler5中调试,而不能在浏览器中显示
- 寻找Grid控件 For Java Applet
- 我正忙于有关于WebGIS的毕设,其中有想在Applet中放置几个TabPage,即标签页,敬请各位师长学兄不吝赐教,小弟在此先表谢意。如由简单实例,那最好不过,我的e-mail是[email protected]
- java
- 一个小游戏出问题了,帮忙给看下,不胜感激
- 请问java如何与HID设备进行通信?
是log4j推荐的做法你的做法也可以显示log
但是你没法设置 该类的类名=error
即可以对某类进行单独设置 类的log优先级
你看看这里就明白了撒,这样获得的logger可以根据具体的类来指定,如上所说,这样就可以对单个类进行定制了
但是你没法设置 该类的类名=error
即可以对某类进行单独设置 类的log优先级没看明白啊。。能具体说说么?
public static Logger logger = org.apache.log4j.Logger.getLogger(该类的类名.class.getName());
人家在这里用了一个singleton的设计模式.只允许有一个对象实例.每个名字都对应一个LOGGER对象.
每个logger都有自己的目的地,屏幕,文件,远程...好象是appender吧.都在配置文件中写明的.由于可以有多个,所以每个logger在写时,都应该得到自己的引用来写,否则,像你这样写是达不到效果的.
2,在输出日志级别提高后,没有一定的检测手段来判断日志级别,得让 Log4j 去判断,像这样: if (log.isDebugEnabled()) {
log.debug("xxxxxx");
}这种做法可以提高一些效率,当然了,方法 1 中也可以这样子用,但是方法 1 不能解决 1 的问题。
你的msn是什么啊。。我觉得你好强啊
但我没明白这是什么意思?public static void runLoger(int level,String info)
{
case 1
logger.debug(info);
.
.
.
case 4
logger.error(info);
} 我这样不就根据级别打印了码?
log.debug("xxxxxx");
}如果日志级别在 info 时,就不执行 log.debug 了,如果没有这个判断,
就会执行 log.debug,实际上这句是白执行的,其在执行时才会去检查日
志级别是否满足,不满足则不输出。在一些开源框架的代码中都是这么写的。
不知道多传一个参数进来是否可行
public static void runLoger(int level,String info,String name)
{
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(name);
case 1
logger.debug(info);
.
.
.
case 4
logger.error(info);
}
{
case 1
logger.debug(info);
.
.
.
case 4
logger.error(info);
} 火龙啊你意思我如果这样写的话.如果我在log4j里面,虽然设置成只打印error级别,但是后台还会什么级别的日志都打印出来?