A. 菜鸟求助:eclipse log4j配置问题
就是那个 log4j.xml,它的功能与 log4j.properties 类似。默认的 log4j 配置是从类路径的根目录下(也就是 classes 文件夹中)读取的,当你把它放在其它目录时,需要明确的初始化 log4j 配置。这里讲到当配置文件不是默认的 log4j.properties 时应该明确地设置一个参数,比如 -Dlog4j.configuration=log4j.xml它也提到了默认如果文件名以 .xml 结尾会自动用 DOMConfigurator 来读取 xml 否则假定为 properties 文件格式。http://logging.apache.org/log4j/1.2/manual.html
B. log4j在java的web项目中怎么用的,如何配置等等。。
在web.xml中添加配置:<!– 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)–> 下面使用了内classpath 参数指定log4j.properties文件的位置容,这样log4j的配置文件就不用非要放到src的下面:<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:config/log4j/log4j.properties</param-value></context-param> 使用spring的监听器,当应用启动时来读取log4j的配置文件<listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>
C. java 如何配置log4j日志文件保存路径
以DailyRollingFileAppender 为例:假设每天一个日志文件 有以下设置: log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=app.log log4j.appender.A1.DatePattern='.'yyyy-MM-dd log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d %5p – %c -%-4r [%t] – %m%n 此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案: 1 绝对路径 log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log 但这种写法灵活性很差 以下3中使用相同的设置原理: jvm的环境变量 2:spring的Log4jConfigListener 通过以下配置:< context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param>< listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> … log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log … 来解决 2:使用已有jvm变量: 例如: log4j.appender.logfile.File=${user.home}/logs/app.log 日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log 3 自己设置目录,也就是在项目启动时通过System.setProperty设置 通过实现ServletContextListener来解决:例如public class log4jlistener implements ServletContextListener { public static final String log4jdirkey = "log4jdir"; public void contextDestroyed(ServletContextEvent servletcontextevent) { System.getProperties().remove(log4jdirkey); } public void contextInitialized(ServletContextEvent servletcontextevent) { String log4jdir = servletcontextevent.getServletContext().getRealPath("/"); //System.out.println("log4jdir:"+log4jdir); System.setProperty(log4jdirkey, log4jdir); }} web.xml配置:<listener> <listener-class>com.log4j.log4jlistener</listener-class> </listener> log4j.prtperties 配置: log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log 来解决。
D. Java Spring log4j-怎么配置日志输入的相对路径
<context-param> <param-name>log4jExposeWebAppRoot</param-name> <param-value>false</param-value></context-param><context-param><param-name>log4jConfigLocation</param-name><param-value>/WEB-INF/classes/log4j.properties</param-value></context-param>
E. log4j怎么配置日志输出路径
以DailyRollingFileAppender 为例:假设每天一个日志文件有以下设置:log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=app.loglog4j.appender.A1.DatePattern='.'yyyy-MM-ddlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d %5p – %c -%-4r [%t] – %m%n此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:1 绝对路径log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log但这种写法灵活性很差以下3中使用相同的设置原理: jvm的环境变量2:spring的Log4jConfigListener通过以下配置:< context-param><param-name>webAppRootKey</param-name><param-value>webApp.root</param-value></context-param><context-param><param-name>log4jConfigLocation</param-name><param-value>classpath:log4j.properties</param-value></context-param>< listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>…log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log…来解决2:使用已有jvm变量:例如:log4j.appender.logfile.File=${user.home}/logs/app.log日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log3 自己设置目录,也就是在项目启动时通过System.setProperty设置通过实现ServletContextListener来解决:例如public class log4jlistener implements ServletContextListener {public static final String log4jdirkey = "log4jdir";public void contextDestroyed(ServletContextEvent servletcontextevent) {System.getProperties().remove(log4jdirkey);}public void contextInitialized(ServletContextEvent servletcontextevent) {String log4jdir = servletcontextevent.getServletContext().getRealPath("/");//System.out.println("log4jdir:"+log4jdir);System.setProperty(log4jdirkey, log4jdir);}}web.xml配置:<listener><listener-class>com.log4j.log4jlistener</listener-class></listener>log4j.prtperties 配置:log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log来解决。
F. 如何在log4j.properties文件中使用相对路径
如何在log4j.properties文件中使用相对路径?缺省情况下我们只能在log4j.properties中配置绝对路径。这样以来,我们在系统部署、开放环境移植等环节就会带来很大的不便,需要将路径改来改去。因此,我们可以使用下面的办法来实现在log4j.properties中使用相对路径:1、实现一个Servlet/*** Log4J初始化* @author XiongChun* @since 2011-04-26*/public class Log4jInitServlet extends HttpServlet {/*** Servlet初始化*/public void init(ServletConfig config) throws ServletException {String root = config.getServletContext().getRealPath("/");String log4jLocation = config.getInitParameter("log4jLocation");System.setProperty("webRoot", root);if (G4Utils.isNotEmpty(log4jLocation)) {PropertyConfigurator.configure(root + log4jLocation);}}}2、web.xml加载这个servlet<!– 配置Log4j –><servlet><servlet-name>log4jInit</servlet-name><servlet-class>org.eredlab.g4.rif.util.Log4jInitServlet</servlet-class><init-param><param-name>log4jLocation</param-name><param-value>WEB-INF/classes/log4j.properties</param-value></init-param><load-on-startup>0</load-on-startup></servlet>3、此时在log4j.properties中就可以使用相对路径了,如下:#Rlogfilelog4j.appender.Rlogfile=org.apache.log4j.RollingFileAppenderlog4j.appender.Rlogfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.Rlogfile.layout.ConversionPattern=%d %p [%c] – <%m>%nlog4j.appender.Rlogfile.File=${webRoot}/logs/eRedG4.loglog4j.appender.Rlogfile.MaxFileSize=2048KBlog4j.appender.Rlogfile.MaxBackupIndex=10批注:写完才发现,其实这种方式用的也是绝对路径,只不过是用动态获取绝对路径的方法来达到类似相对路径的效果了。
G. 如何查找log4j加载配置文件的位置
自动加载配置文件:(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,不用在程序中手动加载log4j配置文件。如果将配置文件放到了config文件夹下,在build Path中设置下就好了。若要手动加载配置文件如下:(1)PropertyConfigurator.configure("log4j.properties") 默认读取的是项目根目录的路径。此时的log4j.properties要放在项目目录下。
H. log4j 如何设置输出文件的路径
输出路径没有完美的解决办法。 log4j.rootLogger=debug,stdout,R1 –>>日志输出debug级别以上的到stdout(控制台) 和R1(自己随便定义的)1.log4j.appender.R1.File=/log.log –>>这种输出到 盘的 根目录下 (不推荐,win和linux 不同)2.log4j.appender.R1.File=logs/ydcardsys.log –>>项目文件中 (不推荐,容易清理掉)3.log4j.appender.R.File=${catalina.home}/logs/ydbudget.log (tomcat系的容器 这种方法不错,切到别的容器就不行了)4.web.xml <context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param>log4j.appender.R1.File=${webApp.root}logs/log.log(这种方法的好处是不区分系统,不区分容器,缺点是会产生垃圾文件,${webApp.root} 在这个被赋值前有段日志不会在你想要的地方,当然妨碍不大,我用的就是这种)
I. log4j2的资源文件具体怎么配置
log4j2和log4j是全局配置的,只能有一个配置文件。 你说的引入另外一个jar,里面的某些方法不想被主工程的log4j2拦截吗? 你可以在Log4j2.xml中,对拦截的包进行单独配置。 如果不能达到需求,建议去log4j2官网文档,十分之详细。
未经允许不得转载:山九号 » log4j文件路径配置|log4j在java的web项目中怎么用的如何配置等等