Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为此包启用log4j_Java_Log4j_Portal Java - Fatal编程技术网

Java 如何为此包启用log4j

Java 如何为此包启用log4j,java,log4j,portal-java,Java,Log4j,Portal Java,我正在尝试为com.github.flowersinthesand 我的log4j.properties: log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{

我正在尝试为
com.github.flowersinthesand

我的log4j.properties:

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n

log4j.logger.com.github.flowersinthesand=DEBUG,stdout
据我所知,我这样做是正确的,除非我的包名不正确。我从maven那里得到了包名,假设它将覆盖所有库

    <dependency>
        <groupId>com.github.flowersinthesand</groupId>
        <artifactId>portal-core</artifactId>
        <version>0.6</version>
    </dependency>
    <dependency>
        <groupId>com.github.flowersinthesand</groupId>
        <artifactId>portal-spring</artifactId>
        <version>0.6</version>
    </dependency>
Config.java

package com;

    @Configuration
    @ComponentScan(basePackages = {
            "com"
    })
    @PropertySource(value= {
            "classpath:/application.properties",
            "classpath:/environment-${MY_ENVIRONMENT}.properties"
    })
    @EnableJpaRepositories("com.repository")
    @EnableTransactionManagement
    public class Config {
        @Value("${db.url}")
        String PROPERTY_DATABASE_URL;
        @Value("${db.user}")
        String PROPERTY_DATABASE_USER;
        @Value("${db.password}")
        String PROPERTY_DATABASE_PASSWORD;

        @Value("${persistenceUnit.default}")
        String PROPERTY_DEFAULT_PERSISTENCE_UNIT;

        @Value("${hibernate.dialect}")
        String PROPERTY_HIBERNATE_DIALECT;
        @Value("${hibernate.format_sql}")
        String PROPERTY_HIBERNATE_FORMAT_SQL;
        @Value("${hibernate.show_sql}")
        String PROPERTY_HIBERNATE_SHOW_SQL;
        @Value("${entitymanager.packages.to.scan}")
        String PROPERTY_ENTITYMANAGER_PACKAGES_TO_SCAN;

        @Autowired
        private BeanFactory beanFactory;

        @Bean
        public DataSource dataSource() {
            MysqlDataSource dataSource = new MysqlDataSource();

            dataSource.setUrl(PROPERTY_DATABASE_URL);
            dataSource.setUser(PROPERTY_DATABASE_USER);
            dataSource.setPassword(PROPERTY_DATABASE_PASSWORD);

            return dataSource;
        }

        @Bean
        public JpaTransactionManager transactionManager() throws ClassNotFoundException {
            JpaTransactionManager transactionManager = new JpaTransactionManager();

            transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());

            return transactionManager;
        }

        @Bean
        public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws ClassNotFoundException {
            LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();

            entityManagerFactoryBean.setDataSource(dataSource());
            entityManagerFactoryBean.setPersistenceUnitName(PROPERTY_DEFAULT_PERSISTENCE_UNIT);
            entityManagerFactoryBean.setPackagesToScan(PROPERTY_ENTITYMANAGER_PACKAGES_TO_SCAN);
            entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class);

            Properties jpaProperties = new Properties();
            jpaProperties.put("hibernate.dialect", PROPERTY_HIBERNATE_DIALECT);
            jpaProperties.put("hibernate.format_sql", PROPERTY_HIBERNATE_FORMAT_SQL);
            jpaProperties.put("hibernate.show_sql", PROPERTY_HIBERNATE_SHOW_SQL);

            entityManagerFactoryBean.setJpaProperties(jpaProperties);

            return entityManagerFactoryBean;
        }

        @Bean
        public ApplicationContextProvider applicationContextProvider() {
            return new ApplicationContextProvider();
        }

        /**
         * This bean is required for @Value injection from .properties files
         */
        @Bean
        public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer () {
            return new PropertySourcesPlaceholderConfigurer();
        }

        @Bean
        public App app() {
            return new App(new Options().url("/socket/workstation/approval").packageOf(ApprovalSocketHandler.class), new SpringModule(beanFactory));
        }
    }
Grizzly使用JUL日志记录:。您需要初始化自己的log4j实例以写入stdout,以便将log4j添加到Grizzly日志中。我使用:

  <bean id="log4jConfigurer"
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
    <property name="targetMethod" value="initLogging" />
    <property name="arguments">
      <list>
        <value>classpath:log4j.properties</value>
      </list>
    </property>
  </bean>

类路径:log4j.properties

但是,由于您使用的是spring的代码配置,而不是xml配置,因此可能需要查看

的详细信息。这似乎是我的项目中包含的日志记录包的一个问题。中概述的解决方案解决了此问题,而不是
log4j.logger
I needed
log4j.category

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n

log4j.category.com.github.flowersinthesand=TRACE
log4j.category.org.atmosphere=TRACE

maven groupId不一定与java包名称相同。通常是这样,但这不是一项要求。(我刚刚检查了源代码,它是正确的包,但之前的声明仍然有效)@Lucas-谢谢你指出这一点,很高兴知道。你收到任何日志消息吗?或者只是缺少了这些和调试消息?@Lucas-当
log4j.rootLogger=debug时,stdout
会调试hibernate,但仅此而已。我没有看到其他包裹出现在那里。我也在使用
Spring
Grizzly
。我可以告诉您,您的log4j.properties文件符合您的要求。这意味着还有别的事情在发生。您使用的是哪个servlet容器?你把你的log4j.properties放在哪里了?applicationContext.xml是什么样子的(它是初始化log4j还是允许容器初始化log4j)?这看起来很有希望:但它没有解决任何问题:-\n问题是,它正在读取我的
log4j.properties
。我可以切换
log4j.rootLogger=INFO,stdout
并查看日志中的更改。我可以
调试
,但它不会影响其他类。如果其他类使用slf4j或jul而不是commons logging或log4j直接登录,那么您将需要相应的适配器库(slf4j-log4j12和jcl-over-slf4j,或我头顶上的jul-to-slf4j…)
log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n

log4j.category.com.github.flowersinthesand=TRACE
log4j.category.org.atmosphere=TRACE