์๋ฐ๋ฅผ ํ๊ฒ๋๋ฉด ์ฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด System.out.println()์ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ์คํ๋ง์์๋ ์ด๋ฅผ ์ฌ์ฉํ ํ์์์ด log4j๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ก๊ทธ ๊ด๋ จํ ๊ธฐ๋ฅ๋ค์ ๊ด๋ฆฌํด์ค๋๋ค.
์ด ๊ธ์ STS(Spring toos Suite)๋ก ์์ฑํ ์คํ๋ง ํ๋ก์ ํธ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค. STS๋ฅผ ์ด์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ํ๋จ์ ๊ด๋ จ ๊ธ์ ํฌ์คํธํฉ๋๋ค.
์ด ๊ธ์ ์๋ฐ์น์ ๋ค๋ฃจ๋ ๊ธฐ์ ์ฑ ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค.
log4j๋?
์คํ๋ง์ผ๋ก ๊ฐ๋ฐํ ๋ ๋ณด๋ฉด ์ฝ์์ ์์ ๊ฐ์ ์์ฒญ ๋ง์ ๋ก๊ทธ๋ค์ด ์ถ๋ ฅ๋๋๋ฐ ์ด ๋ชจ๋ ๊ฒ log4j ๋๋ถ์ ๋๋ค. ๊ฐ๋ฐํ ๋น์์ ์ฌ์ฉํ๋ ๋ก๊ทธ ๋ฉ์์ง๋ค์ ์ค์ ๋ก ์๋น์คํ ๋ ์ ํ ํ์์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ด ๊ฒฝ์ฐ ์ผ์ผ์ด ์ฐพ์์ ํด๋น ๋ก๊ทธ๋ค์ ์ญ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ ์ด๋ ๋ฒ๊ฑฐ๋กญ๊ธฐ ์ง์ด ์์ต๋๋ค. ์ด๋ด๋ ํ์ํ ๊ฒ์ด log4j์ ๋๋ค.
log4j.xml์ ์ด๋ฃจ๋ ํ๊ทธ
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<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>
<!-- Application Loggers -->
<logger name="com.myspring.pro27">
<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>
<priority value="debug" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
ํ๊ทธ | ์ค๋ช |
<appender> | ๋ก๊ทธ์ ์ถ๋ ฅ ์์น(ํ์ผ, ์ฝ์, DB๋ฑ)๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. |
<layout> | appender๊ฐ ์ด๋์ ์ถ๋ ฅํ ๊ฒ์ธ์ง์ ๋ํ ํ๊ทธ์๋ค๋ฉด layout์ ์ด๋ค ํ์์ผ๋ก ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ ์ง ์ ํด์ค๋๋ค. |
<logger> | ๋ก๊น ๋ฉ์์ง๋ฅผ appender์ ์ ๋ฌํฉ๋๋ค. logger๋ 6๋จ๊ณ์ ๋ ๋ฒจ์ ๊ฐ์ง๋ฉฐ, ๋ ๋ฒจ์ ๊ฐ์ง๊ณ ์ถ๋ ฅ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. |
# appender๊ฐ ๊ฐ์ง๋ ์ฌ๋ฌ๊ฐ์ง ํด๋์ค
appender ํด๋์ค | ์ค๋ช |
ConsoleAppender | org.apache.log4j.ConsoleAppender ํด๋์ค๋ก, ์ฝ์์ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค. |
FileAppender | org.apache.log4j.FileAppender ํด๋์ค๋ก, ํ์ผ์ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค. |
RollingFileAppender | org.apache.log4j.rolling.RollingFileAppender ํด๋์ค๋ก, ํ์ผ ํฌ๊ธฐ๊ฐ ์ผ์ ๊ธฐ์ค์ ๋์ผ๋ฉด ๊ธฐ์กด ํ์ผ์ ๋ฐฑ์ ํ์ผ๋ก ๋ฐ๊พธ๋ก ์ฒ์๋ถํฐ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. |
DailyRollingAppender | org.apache.log4j.rolling.DailyRollingFileAppender ํด๋์ค๋ก, ์ค์ ํ ๊ธฐ๊ฐ ๋จ์๋ก ์ ํ์ผ์ ๋ง๋ค์ด ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค. |
# PatternLayout ํด๋์ค์์ ์ฌ์ฉ๋๋ ์์ฑ๋ค
์์ฑ | ์ค๋ช |
%p | debug, info ๋ฑ ๋ก๊ทธ ๋ ๋ฒจ ์ด๋ฆ ์ถ๋ ฅ |
%m | ๋ก๊ทธ ๋ฉ์์ง ์ถ๋ ฅ |
%d | ๋ก๊น ์ด๋ฒคํธ ๋ฐ์ ์๊ฐ ์ถ๋ ฅ (yyyy-MM-dd HH:mm:ss) |
%c | ๋ก๊น ๋ฉ์์ง ์์ ์ ์ฒด ํจํค์ง ์ด๋ฆ์ด๋ ์ ์ฒด ํ์ผ ์ด๋ฆ ์ถ๋ ฅ |
์ด์ธ์๋ ๋ ๋ง์ด ์์ผ๋ ์ง์ ์ฐพ์๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
http://logging.apache.org/log4j/1.2/manual.html
# log4j์ ์ฌ๋ฌ ๊ฐ์ง ๋ก๊ทธ ๋ ๋ฒจ
๋ ๋ฒจ | ์ค๋ช |
FATAL(6๋ ๋ฒจ) | ์์คํ ์ฐจ์์์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋์ ๋ ๋ฒจ์ ๋๋ค. |
ERROR | ์คํ ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ํ๋ฅผ ๋ํ๋ ๋๋ค. |
WARN | ์์คํ ์ค๋ฅ์ ์์ธ์ด ๋ ์ ์๋ ๋ฉ์์ง๋ฅผ ๋ํ๋ ๋๋ค. |
INFO | ๋ก๊ทธ์ธ, ์ํ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด์๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค. |
DEBUG | ๊ฐ๋ฐ ์ ๋๋ฒ๊น ์ฉ๋๋ก ์ฌ์ฉํ ๋ฉ์์ง๋ฅผ ๋ํ๋ ๋๋ค. |
TRACE(1๋จ๊ณ) | DEBUG๋ณด๋ค ์์ธํ ๋ก๊น ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค. |
๊ฐ์ฅ ๋ฎ์ TRACE๋ฅผ ์์ํด FATAL ๋ ๋ฒจ๊น์ง ์์ต๋๋ค. ์ง์ ํ ๋ ๋ฒจ๋ณด๋ค ๋ฎ์ ๋ ๋ฒจ์ ๋ฉ์์ง๋ค์ ์ถ๋ ฅ๋์ง ์์ง๋ง, ๊ทธ๋ณด๋ค ๋์ ๋ ๋ฒจ์ ๋ฉ์์ง๋ค์ ์ถ๋ ฅ๋ฉ๋๋ค.
๋ง์ฝ INFO๋ก ์ค์ ํ๋ค๋ฉด DEBUG์ TRACE ๊ด๋ จ ๋ฉ์์ง๋ ์ถ๋ ฅ๋์ง ์์ง๋ง, ๊ทธ๋ณด๋ค ๋์ ๋๋จธ์ง 3๋ ๋ฒจ์ INFO์ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์์
@Controller("memberController")
public class MemberControllerImpl implements MemberController {
private static final Logger logger = LoggerFactory.getLogger(MemberControllerImpl.class);
@Autowired
private MemberService memberService;
@Autowired
private MemberVO memberVO ;
@Override
@RequestMapping(value="/member/listMembers.do" ,method = RequestMethod.GET)
public ModelAndView listMembers(HttpServletRequest request, HttpServletResponse response) throws Exception {
String viewName = getViewName(request);
logger.info("viewName: "+ viewName);
logger.debug("viewName: "+ viewName);
List membersList = memberService.listMembers();
ModelAndView mav = new ModelAndView("home");
mav.addObject("membersList", membersList);
return mav;
}
๋ง์ฝ log4j.xml์์ logger๊ฐ info๋ก ๋์ด์๋ค๋ฉด logger.debug ๊ด๋ จ ๋ก๊ทธ๋ ์ถ๋ ฅ๋์ง ์์ต๋๋ค.
logger์ ๋ ๋ฒจ์ debug๋ก ๋ฎ์ถ์๋๋ debug ๋ํ ์ถ๋ ฅ์ด ๋์์ต๋๋ค.
๋ง์ด๋ฐํฐ์ค SQL๋ฌธ์ ๋ก๊ทธ๋ก ์ถ๋ ฅํ๊ธฐ
<!-- Root Logger -->
<root>
<priority value="debug" />
<appender-ref ref="console" />
</root>
log4j.xml์์ root logger์ ์์ฑ๊ฐ์ debug๋ก ํด์ฃผ๋ฉด sql ๋ํ ์ถ๋ ฅ์ด ๋ฉ๋๋ค.
์ด์ log4j.xml์ ๋ํด ์์๋ณด์์ต๋๋ค.
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ์คํ๋ง์์ ํ๊ฒฝ ๋ณ์ ์ฌ์ฉํ๊ธฐ (0) | 2021.01.14 |
---|---|
[Spring] ์คํ๋ง servlet-context๋ก jsp ๊ฒฝ๋ก ์ค์ ํ๊ธฐ (0) | 2021.01.14 |
[Js] window.open ํจ์๋ก ํ์ ์ฐฝ ์ด๊ธฐ (0) | 2021.01.14 |
List cannot be resolved to a type ์๋ฌ (0) | 2021.01.12 |
Tomcat 8 / ์์ฒญ ํ๊ฒ์์ ์ ํจํ์ง ์์ ๋ฌธ์๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค. tomcat rfc 7230 rfc 3986 ์ค๋ฅ (0) | 2021.01.12 |