[Spring 2-1] pom.xml, log4j.xml ์ˆ˜์ •

์ž„์Šนํ˜„ยท2023๋…„ 2์›” 10์ผ

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
2/46

๐Ÿงpom.xml

๐Ÿ“ขMaven : ๋นŒ๋“œ ํˆด - ํ”„๋กœ์ ํŠธ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

๐Ÿ“Œpom.xml : Maven ๋นŒ๋“œ ํˆด์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ
โ†’ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋˜๋„๋ก ์ฒ˜๋ฆฌ
โ†’ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅ
๐Ÿ“Œ๋กœ์ปฌ ์ €์žฅ์†Œ(Local Repository) : ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋”
โ†’ ์‚ฌ์šฉ์ž ํด๋”์˜ .m2 ํด๋”๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉ
๐Ÿ“Œ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ดํด๋ฆฝ์Šค ์ข…๋ฃŒ ํ›„ .m2 ํด๋”์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ์ดํด๋ฆฝ์Šค ์žฌ์‹คํ–‰
๐Ÿ“Œ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ(Maven Repository) : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ์ €์žฅ๋œ ์ธํ„ฐ๋„ท์ƒ์˜ ์ €์žฅ์†Œ
โ†’ https://mvnrepository.com ์‚ฌ์ดํŠธ ์ฐธ์กฐ

๐Ÿ”Šproperties : pom.xml ํŒŒ์ผ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ์ด๋ฆ„(์‹๋ณ„์ž)์„ ์ด์šฉํ•˜์—ฌ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
โ†’ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋ช… ์ด๋ฆ„์„ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ์ด ์ œ๊ณต๋˜๋Š” ๊ฐ’์„ ํ‘œํ˜„
โ†’ pom.xml ํŒŒ์ผ์—์„œ ${์ด๋ฆ„} ํ˜•์‹์œผ๋กœ ๊ฐ’์„ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
โ†’ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด properties ์—˜๋ฆฌ๋จผํŠธ ์‚ฌ์šฉ

<properties>
	<org.springframework-version>5.3.25</org.springframework-version>
	<org.aspectj-version>1.9.19</org.aspectj-version>
	<org.slf4j-version>2.0.6</org.slf4j-version>
</properties>

๐Ÿ”Šdependency : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
โ†’ ์˜์กด๊ด€๊ณ„๋กœ ์„ค์ •๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋„ ์ž๋™์œผ๋กœ ๋นŒ๋“œ ์ฒ˜๋ฆฌ
๐Ÿ”ŠgroupId : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋Š” ๊ทธ๋ฃน์˜ ์‹๋ณ„์ž(๋„๋ฉ”์ธ)๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
๐Ÿ”ŠartifactId : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ด๋ฆ„(์‹๋ณ„์ž)์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
๐Ÿ”Šversion : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
๐Ÿ”Šexclusions : exclusion ๋ชฉ๋ก์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
๐Ÿ”Šexclusion : ์˜์กด๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ์ œ์™ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>${org.springframework-version}</version>
	<exclusions>
		<!-- Exclude Commons Logging in favor of SLF4j -->
		<exclusion>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		 </exclusion>
	</exclusions>
</dependency>

๐Ÿ“ƒpom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
	<!-- Maven : ๋นŒ๋“œ ํˆด - ํ”„๋กœ์ ํŠธ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ -->
	<!-- pom.xml : Maven ๋นŒ๋“œ ํˆด์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ -->
	<!-- โ†’ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋˜๋„๋ก ์ฒ˜๋ฆฌ -->
	<!-- โ†’ ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅ -->
	<!-- ๋กœ์ปฌ ์ €์žฅ์†Œ(Local Repository) : ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋” -->
	<!-- โ†’ ์‚ฌ์šฉ์ž ํด๋”์˜ .m2 ํด๋”๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉ -->
	<!-- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ดํด๋ฆฝ์Šค ์ข…๋ฃŒ ํ›„ .m2 ํด๋”์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ์ดํด๋ฆฝ์Šค ์žฌ์‹คํ–‰ -->
	<!-- ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ(Maven Repository) : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ์ €์žฅ๋œ ์ธํ„ฐ๋„ท์ƒ์˜ ์ €์žฅ์†Œ -->
	<!-- โ†’ https://mvnrepository.com ์‚ฌ์ดํŠธ ์ฐธ์กฐ -->
	<modelVersion>4.0.0</modelVersion>
	<groupId>xyz.itwill</groupId>
	<artifactId>controller</artifactId>
	<name>spring</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	<!-- properties : pom.xml ํŒŒ์ผ์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ์ด๋ฆ„(์‹๋ณ„์ž)์„ ์ด์šฉํ•˜์—ฌ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
	<!-- โ†’ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋ช… ์ด๋ฆ„์„ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ์ด ์ œ๊ณต๋˜๋Š” ๊ฐ’์„ ํ‘œํ˜„ -->
	<!-- โ†’ pom.xml ํŒŒ์ผ์—์„œ ${์ด๋ฆ„} ํ˜•์‹์œผ๋กœ ๊ฐ’์„ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ -->
	<!-- โ†’ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด properties ์—˜๋ฆฌ๋จผํŠธ ์‚ฌ์šฉ  -->
	<properties>
		<org.springframework-version>5.3.25</org.springframework-version>
		<org.aspectj-version>1.9.19</org.aspectj-version>
		<org.slf4j-version>2.0.6</org.slf4j-version>
	</properties>
	<!-- ======================================================================================================== -->
	<!-- dependencies : dependency ์—˜๋ฆฌ๋จผํŠธ ๋ชฉ๋ก์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
	<dependencies>
		<!-- Spring -->
		<!-- dependency : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
		<!-- โ†’ ์˜์กด๊ด€๊ณ„๋กœ ์„ค์ •๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋„ ์ž๋™์œผ๋กœ ๋นŒ๋“œ ์ฒ˜๋ฆฌ -->
		<dependency>
			<!-- groupId : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋Š” ๊ทธ๋ฃน์˜ ์‹๋ณ„์ž(๋„๋ฉ”์ธ)๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ --> 
			<groupId>org.springframework</groupId>
			<!-- artifactId : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ด๋ฆ„(์‹๋ณ„์ž)์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ --> 
			<artifactId>spring-context</artifactId>
			<!-- version : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
			<version>${org.springframework-version}</version>
			<!-- exclusions : exclusion ๋ชฉ๋ก์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<!-- exclusion : ์˜์กด๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ์ œ์™ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ --> 
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				 </exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		<!-- ======================================================================================================== -->		
		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>	
		<!-- ======================================================================================================== -->
		<!-- Logging -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<!-- scope : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ๋นŒ๋“œ๋˜์–ด์ง€๋Š” ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->	
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>
		<!-- ======================================================================================================== -->
		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>
		<!-- ======================================================================================================== -->		
		<!-- Servlet -->
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>4.0.1</version>
		    <scope>provided</scope>
		</dependency>
		<dependency>
		    <groupId>javax.servlet.jsp</groupId>
		    <artifactId>javax.servlet.jsp-api</artifactId>
		    <version>2.3.3</version>
		    <scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- ======================================================================================================== -->
		<!-- Test -->
		<dependency>
		    <groupId>junit</groupId>
		    <artifactId>junit</artifactId>
		    <version>4.13.2</version>
		    <scope>test</scope>
		</dependency>
		<!-- ======================================================================================================== -->
		<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
		<!-- => ๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋ฅผ ์ด์šฉํ•œ ๋กœ๊น… ์ •๋ณด ์ฒ˜๋ฆฌ์‹œ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„
		์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ --> 
		<dependency>
		    <groupId>xerces</groupId>
		    <artifactId>xercesImpl</artifactId>
		    <version>2.12.2</version>
		</dependency>
		<!-- ======================================================================================================== -->
		<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin -->
		<!-- => Maven Plugin ๋ฌธ์ œ์˜ pom.xml ํŒŒ์ผ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋œ ๊ฒฝ์šฐ ๋นŒ๋ฆฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ 
		ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -->
		<!--
		<dependency>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-resources-plugin</artifactId>
		    <version>3.3.0</version>
		</dependency>
		-->
	</dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

๐Ÿงlog4j.xml

๐Ÿ“Œappender : ๋กœ๊ทธ ๊ตฌํ˜„์ฒด์— ๋Œ€ํ•œ ํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
๐Ÿ“name ์†์„ฑ : appender ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
๐Ÿ“class ์†์„ฑ : ๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
โ†’ class ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ํด๋ž˜์Šค์— ๋”ฐ๋ผ ๋กœ๊น…์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ฒŒ ์„ค์ •
โ†’ class ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ Appender ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์ž‘์„ฑ

๐Ÿ“ŒConsoleAppender ํด๋ž˜์Šค : ๋กœ๊น…์ •๋ณด๋ฅผ ์„œ๋ฒ„ ์ฝ˜์†”์— ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค

๐Ÿ“Œparam : Appender ํด๋ž˜์Šค์— ํ•„์š”ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ

๐Ÿ“Œlayout : ๋กœ๊น…์ •๋ณด๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๋กœ๊ทธ ํ˜•์‹์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
๐Ÿ“class ์†์„ฑ : ๋กœ๊ทธ ํ˜•์‹ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
โ†’ PatternLayout ํด๋ž˜์Šค : ๋กœ๊ทธ ํ˜•์‹์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€ํ™˜ ๋ฌธ์ž๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค

๐Ÿ’ก ๋ณ€ํ™˜๋ฌธ์ž(Conversion Character) - ๋ณ€ํ™˜๋ฌธ์ž๋Š” ์ผ๋ฐ˜๋ฌธ์ž์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด % ๊ธฐํ˜ธ๋กœ ์‹œ์ž‘

๐Ÿ“Œ%c : ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๊ธฐ๋ก - {์ •์ˆ˜๊ฐ’}์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๊ธฐ๋ก ๊ฐ€๋Šฅ
โ†’ %c{1} : ํŒจํ‚ค์ง€๋ฅผ ์ œ์™ธํ•œ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๋งŒ ๊ธฐ๋ก
๐Ÿ“Œ%d : ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๊ธฐ๋ก - {SimpleDateFormat}์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๊ธฐ๋ก
โ†’ %d{yyyy-MM-dd} : [๋…„-์›”-์ผ] ํ˜•์‹์œผ๋กœ ๋กœ๊ทธ์‹œ๊ฐ„ ๊ธฐ๋ก
๐Ÿ“Œ%m : ๋กœ๊ทธ ์ด๋ฒคํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ๊ธฐ๋ก
๐Ÿ“Œ%n : ์—”ํ„ฐ(Enter)๋ฅผ ๊ธฐ๋ก - ๋กœ๊ทธ ์ค„๋ฐ”๊ฟˆ
๐Ÿ“Œ%M : ๋กœ๊ทธ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋œ ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์„ ๊ธฐ๋ก
๐Ÿ“Œ%p : ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐœ์ƒ๋œ ๋กœ๊ทธ ์ด๋ฒคํŠธ ๊ธฐ๋ก

โ†’ ๋กœ๊ทธ ์ด๋ฒคํŠธ : TRACE > DEBUG > INFO > WARN > ERROR > FATAL
๐Ÿ’ก ๋ณ€ํ™˜๋ฌธ์ž ์ž๋ฆฟ์ˆ˜ ์„ค์ • - %p ๋ณ€ํ™˜๋ฌธ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜ˆ์ œ ์„ค์ •
๐Ÿ“Œ%p : ๋กœ๊ทธ ์ด๋ฒคํŠธ์˜ ๊ธธ์ด๋งŒํผ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก
๐Ÿ“Œ%5p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ 5์ž๋ฆฌ(์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜)๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก - ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ

โ†’ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๊ธฐ๋ก์ด ์ž˜๋ฆฌ๊ณ  ๋‚จ์œผ๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ๊ธฐ๋ก
๐Ÿ“Œ%-5p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ 5์ž๋ฆฌ(์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜)๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก - ์™ผ์ชฝ ์ •๋ ฌ
๐Ÿ“Œ%.5p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ 5์ž๋ฆฌ(์ตœ์†Œ ์ž๋ฆฟ์ˆ˜)๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก - ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ

<appender name="console" class="org.apache.log4j.ConsoleAppender">
	<param name="Target" value="System.out" />
	<layout class="org.apache.log4j.PatternLayout">
		<param name="ConversionPattern" value="%-5p: %c - %m%n" />
	</layout>
</appender>

๐Ÿ“ƒlog4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- log4j.xml : ๋กœ๊ทธ ๊ตฌํ˜„์ฒด์— ๋Œ€ํ•œ ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ -->
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- ======================================================================================================== -->
	<!-- Appenders -->
	<!-- appender : ๋กœ๊ทธ ๊ตฌํ˜„์ฒด์— ๋Œ€ํ•œ ํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
	<!-- name ์†์„ฑ : appender ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
	<!-- class ์†์„ฑ : ๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
	<!-- โ†’ class ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ํด๋ž˜์Šค์— ๋”ฐ๋ผ ๋กœ๊น…์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ฒŒ ์„ค์ • -->
	<!-- โ†’ class ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ Appender ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์ž‘์„ฑ -->
	<!-- ConsoleAppender ํด๋ž˜์Šค : ๋กœ๊น…์ •๋ณด๋ฅผ ์„œ๋ฒ„ ์ฝ˜์†”์— ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<!-- param : Appender ํด๋ž˜์Šค์— ํ•„์š”ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
		<param name="Target" value="System.out" />
		<!-- layout : ๋กœ๊น…์ •๋ณด๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๋กœ๊ทธ ํ˜•์‹์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
		<!-- class ์†์„ฑ : ๋กœ๊ทธ ํ˜•์‹ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
		<!-- โ†’ PatternLayout ํด๋ž˜์Šค : ๋กœ๊ทธ ํ˜•์‹์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€ํ™˜ ๋ฌธ์ž๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค -->
		<!-- โ—ˆ ๋ณ€ํ™˜๋ฌธ์ž(Conversion Character) - ๋ณ€ํ™˜๋ฌธ์ž๋Š” ์ผ๋ฐ˜๋ฌธ์ž์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด % ๊ธฐํ˜ธ๋กœ ์‹œ์ž‘ -->
		<!-- %c : ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๊ธฐ๋ก - {์ •์ˆ˜๊ฐ’}์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๊ธฐ๋ก ๊ฐ€๋Šฅ -->
		<!-- โ†’ %c{1} : ํŒจํ‚ค์ง€๋ฅผ ์ œ์™ธํ•œ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๋งŒ ๊ธฐ๋ก -->
		<!-- %d : ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๊ธฐ๋ก - {SimpleDateFormat}์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๊ธฐ๋ก -->
		<!-- โ†’ %d{yyyy-MM-dd} : [๋…„-์›”-์ผ] ํ˜•์‹์œผ๋กœ ๋กœ๊ทธ์‹œ๊ฐ„ ๊ธฐ๋ก -->
		<!-- %m : ๋กœ๊ทธ ์ด๋ฒคํŠธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ๊ธฐ๋ก -->
		<!-- %n : ์—”ํ„ฐ(Enter)๋ฅผ ๊ธฐ๋ก - ๋กœ๊ทธ ์ค„๋ฐ”๊ฟˆ -->
		<!-- %M : ๋กœ๊ทธ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋œ ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์„ ๊ธฐ๋ก -->
		<!-- %p : ๋กœ๊ทธ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐœ์ƒ๋œ ๋กœ๊ทธ ์ด๋ฒคํŠธ ๊ธฐ๋ก -->
		<!-- โ†’ ๋กœ๊ทธ ์ด๋ฒคํŠธ : TRACE > DEBUG > INFO > WARN > ERROR > FATAL -->
		<!-- โ—ˆ ๋ณ€ํ™˜๋ฌธ์ž ์ž๋ฆฟ์ˆ˜ ์„ค์ • - %p ๋ณ€ํ™˜๋ฌธ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜ˆ์ œ ์„ค์ • -->
		<!-- %p : ๋กœ๊ทธ ์ด๋ฒคํŠธ์˜ ๊ธธ์ด๋งŒํผ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก -->
		<!-- %5p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ 5์ž๋ฆฌ(์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜)๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก - ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ -->
		<!-- โ†’ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๊ธฐ๋ก์ด ์ž˜๋ฆฌ๊ณ  ๋‚จ์œผ๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ๊ธฐ๋ก -->
		<!-- %-5p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ 5์ž๋ฆฌ(์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜)๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก - ์™ผ์ชฝ ์ •๋ ฌ -->
		<!-- %.5p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ 5์ž๋ฆฌ(์ตœ์†Œ ์ž๋ฆฟ์ˆ˜)๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก - ์˜ค๋ฅธ์ชฝ ์ •๋ ฌ -->
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%-5p: %c - %m%n" />
		</layout>
	</appender>
	<!-- ======================================================================================================== -->
	<!-- Application Loggers -->
	<!-- logger : ํŠน์ • ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค์—์„œ ๋ฐœ์ƒ๋˜๋Š” ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
	<!-- name ์†์„ฑ : ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
	<logger name="xyz.itwill.controller">
		<!-- level : ํŒจํ‚ค์ง€์— ์ž‘์„ฑ๋œ ํด๋ž˜์Šค์—์„œ ๋ฐœ์ƒ๋˜๋Š” ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
		<level value="info" />
	</logger>
	<!--  -->
	<!-- 3rdparty Loggers -->
	<logger name="org.springframework.core">
		<level value="info" />
	</logger>
	<!--  -->
	<logger name="org.springframework.beans">
		<level value="info" />
	</logger>
	<!--  -->
	<logger name="org.springframework.context">
		<level value="info" />
	</logger>
	<!--  -->
	<logger name="org.springframework.web">
		<level value="info" />
	</logger>
	<!-- ======================================================================================================== -->
	<!-- Root Logger -->
	<!-- root : ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๋ฐœ์ƒ๋˜๋Š” ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
	<!-- โ†’ ๋ชจ๋“  logger ์—˜๋ฆฌ๋จผํŠธ๋Š” root ์—˜๋ฆฌ๋จผํŠธ์˜ ์ •๋ณด๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉ -->
	<root>
		<!-- priority : ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๋ฐœ์ƒ๋˜๋Š” ๊ธฐ๋ณธ ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
		<!-- value ์†์„ฑ : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
		<!-- โ†’ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ณด๋‹ค ์ƒ์œ„์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋œ ๊ฒฝ์šฐ ๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋กœ ๊ธฐ๋ก -->
		<priority value="warn" />
		<!-- appender-ref : ๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ -->
		<!-- ref ์†์„ฑ : appender ์—˜๋ฆฌ๋จผํŠธ์˜ ์‹๋ณ„์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
		<appender-ref ref="console" />
	</root>
</log4j:configuration>

0๊ฐœ์˜ ๋Œ“๊ธ€