maven을 사용하는 경우 일반적으로 log4j.properties를 Java 또는 자원 아래에 배치합니까?
일반적인 Maven 디렉토리를 사용할 때 log4j.properties 파일을 어디에 두어야합니까?
src/main/resources
"표준 게재 위치"입니다.
업데이트 : 위의 질문에 대답하지만 최선의 해결책은 아닙니다. 다른 답변과 이에 대한 의견을 확인하십시오 ... 자신의 로깅 속성을 jar와 함께 제공하지 않고 대신 원하는 로깅을 구성하기 위해 클라이언트 (예 : app-server, stage environment 등)에 남겨 두십시오. 따라서 그것을 넣는 것이 src/test/resources
내가 선호하는 솔루션입니다.
참고 : 구체적 로그 구성을 클라이언트 / 사용자에게 남겨 두 려면 앱에서로 대체 log4j
를 고려해야 slf4j
합니다.
그것을 넣는 것만으로 그것을 src/main/resources
인공물 안에 묶을 것입니다. 예를 들어, 아티팩트가 JAR 인 경우 log4j.properties
파일을 내부에 보관하여 로깅을 구성 할 수있는 초기 지점을 잃게됩니다.
나는 보통 그것을 넣고 다음 src/main/resources
과 같이 목표에 맞게 출력되도록 설정했다.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}</targetPath>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
</resources>
</build>
또한 log4j가 실제로 그것을 보려면 클래스 디렉토리에 출력 디렉토리를 추가해야합니다. 이슈가 실행 가능한 JAR 인 경우 maven-assembly-plugin을 사용하여 생성 한 JAR 일 수 있습니다. 해당 플러그인 내에서 다음 Class-Path
과 같이 매니페스트 항목 을 추가하여 JAR의 현재 폴더를 클래스 경로에 추가 할 수 있습니다.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.your-package.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
이제 log4j.properties 파일은 독립적으로 구성 가능한 JAR 파일 바로 옆에 있습니다.
To run your application directly from Eclipse, add the resources
directory to your classpath in your run configuration: Run->Run Configurations...->Java Application->New
select the Classpath
tab, select Advanced
and browse to your src/resources
directory.
Some "data mining" accounts for that src/main/resources
is the typical place.
Results on Google Code Search:
src/main/resources/log4j.properties
: 4877src/main/java/log4j.properties
: 215
The resources used for initializing the project are preferably put in src/main/resources folder. To enable loading of these resources during the build, one can simply add entries in the pom.xml in maven project as a build resource
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Other .properties files can also be kept in this folder used for initialization. Filtering is set true if you want to have some variables in the properties files of resources folder and populate them from the profile filters properties files, which are kept in src/main/filters which is set as profiles but it is a different use case altogether. For now, you can ignore them.
This is a great resource maven resource plugins, it's useful, just browse through other sections too.
When putting resource files in another location is not the best solution you can use:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<build>
For example when resources files (e.g. jaxb.properties) goes deep inside packages along with Java classes.
If your log4j.properties or log4j.xml file not found under src/main/resources use this PropertyConfigurator.configure("log4j.xml");
PropertyConfigurator.configure("log4j.xml");
Logger logger = LoggerFactory.getLogger(MyClass.class);
logger.error(message);
'IT story' 카테고리의 다른 글
Windows에서 node.js 모듈의 기본 글로벌 설치 디렉토리를 변경 하시겠습니까? (0) | 2020.07.13 |
---|---|
SVN을 사용하여 마지막 10 개의 커밋을 역 시간 순서로 어떻게 볼 수 있습니까? (0) | 2020.07.13 |
중복 된 MIME 유형“text / html”? (0) | 2020.07.13 |
어떤 C ++ 스마트 포인터 구현이 가능합니까? (0) | 2020.07.13 |
뷰가 데이터베이스에 있는지 어떻게 확인합니까? (0) | 2020.07.12 |