๋ฐ์ํ
log4j
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.junit.Before;
import org.junit.Test;
public class LogTest {
private Logger logger;
@Before
public void initialize() {
logger = LogManager.getLogger("logger");
// ๋ชจ๋ Appender ์ ๊ฑฐ
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
loggerConfig.removeAppenders();
context.updateLoggers(); // ์ค์ ๋ฐ์
}
@Test
public void basicLogger() {
// ๊ฐ๋จํ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ๋ก๊ฑฐ ์ด๊ธฐํ
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
PatternLayout layout = PatternLayout.newBuilder().withPattern("%p %t %m%n").build();
ConsoleAppender appender = ConsoleAppender.newBuilder()
.setName("ConsoleAppender")
.setLayout(layout)
.setTarget(ConsoleAppender.Target.SYSTEM_OUT)
.build();
appender.start();
loggerConfig.addAppender(appender, null, null);
context.updateLoggers();
logger.info("basicLogger");
}
@Test
public void addAppenderWithStream() {
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
PatternLayout layout = PatternLayout.newBuilder().withPattern("%p %t %m%n").build();
ConsoleAppender appender = ConsoleAppender.newBuilder()
.setName("ConsoleAppender")
.setLayout(layout)
.setTarget(ConsoleAppender.Target.SYSTEM_OUT)
.build();
appender.start();
loggerConfig.addAppender(appender, null, null);
context.updateLoggers();
logger.info("addAppenderWithStream");
}
@Test
public void addAppenderWithoutStream() {
LoggerContext context = (LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
PatternLayout layout = PatternLayout.newBuilder().withPattern("%p %t %m%n").build();
ConsoleAppender appender = ConsoleAppender.newBuilder()
.setName("ConsoleAppender")
.setLayout(layout)
.build();
appender.start();
loggerConfig.addAppender(appender, null, null);
context.updateLoggers();
logger.info("addAppenderWithoutStream");
}
}
๋๋๋ก chatGPT์ ๋์์ ์ ๋ฐ์ผ๋ ค ํ๋๋ฐ ์ด๋ฒ์ ์ด์ฉ ์ ์์ด ๋ฐ์ ์ฝ๋ ์ฌ๋ฆฝ๋๋ค.
- ์ฑ ์ ๋์จ ๋ด์ฉ์ ์์ ๋ฒ์ ์ด๋ผ ์ง๊ธ์ ๊ทธ๋๋ก ์จ๋ ์๋ ํจ์๋ค์ด ๋ง์ต๋๋ค.
- Maven ๊ฐ์ ์ํคํ
์ณ ํ๋ก์ ํธ์์ ํธํ๊ฒ apach์ log4j๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ผ๋ฐ ์๋ฐ ํ๋ก์ ํธ์์๋ ๋ฐ๋ก ๋ค์ด๋ก๋ ๋ฐ๊ณ ํจ์ค ์ค์ ์ ํด์ค์ผ ํ๋ ๋ฑ ์ด๋ ค์์ด ์์ต๋๋ค. - ์์ ๋ณด๋ฉด ๋ฉ์๋ ์์ ์ค๋ณต๋ ์ฝ๋๋ค์ด ๋ณด์ด๋๋ฐ
์ด๊ธฐํ๋ฅผ ์ํด์ ์ค๋ณต๋ ๋ด์ฉ์ ๋๋ค.
์์ง ์กด์ฌํ์ง ์๋ ์ฝ๋ ์ฌ์ฉํ๊ธฐ
์ฐ๋ฆฌ ํ์์ A๋ฅผ ๊ฐ๋ฐํ๋๋ฐ, B๋ฅผ ๋ง๋๋ ํ์์ ๋ฐ์์ผํ๋ ์ ๋ณด๊ฐ ๋ด๊ธด ์ธํฐํ์ด์ค๊ฐ ์ ์์กฐ์ฐจ ๋์ง ์์ ์ํ๋ผ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
- ์ผ๋จ ์ฐ๋ฆฌ๊ฐ ๋ฐ์์ผ ํ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์ธํฐํ์ด์ค ํด๋์ค์ ๋ฉ์๋๊ฐ๊ฐ ์์ ๊ฒ์ด๋ค.
์ด๊ฒ์ ๊ฐ์ง๋ก ๋ง๋ค์ด ์ฌ์ฉํ ์ ์๋ค. - Interface๋ฅผ ํธ์ถํ Controller๋ฅผ ๋๋๋ค.
- ์ดํ์ ์ธ๋ถ ํ์์ B๋ฅผ ๋ง๋ค๋ฉด
Fake Method์์ API๋ฅผ ํธ์ถํ Adapter๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๋๋ค.
์ค์ ๋ก ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ๊ต์ฅํ ๋ง๊ตฌ์.
ํ ํ์์ ์ธํฐํ์ด์ค๊ฐ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํด ์ฌ์ฉํ๊ณค ํฉ๋๋ค.
ํด๋ฆฐ์ฝ๋ ์ ์๊ฐ ๋งํ๋ ๊ฒ์ ์ด์ ๊ฒฝ๊ณ1์์ ๋งํ๋ ๋ฐ์ ์ฐ๊ฒฐํด์ ์๊ฐํด๋ณด๋ฉด,
์ฐ๋ฆฌ๊ฐ ์ธ๋ถ ์ธํฐํ์ด์ค ํ ์คํธ์ ๋ํ ์ฑ ์์ ์์ง๋ง ๊ทธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ฐ๋ฆฌ ์ฝ๋์ ๋ํ ์ฑ ์์ ์ ์ผ ํ๋ค๋ ๊ฒ์ด๊ตฌ์.
FakeMethod๊ฐ ๋ด๊ธด ํด๋์ค(์๋ง ์์ ๋ฐ์ดํฐ๋ง ๋ด๊ฒจ์๊ฒ ์ฃ )์์ Adapter๋ฅผ ํธ์ถํ๋ ์ญํ ๋ก ๋ฐ๋๋ฉด
ex) return adapter.method1();
Adapter์์๋ ์ธ๋ถ API๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์์ ํ๋ ์์ ์ ํ๋ ๊ณณ์ด ๋ฉ๋๋ค.
๋ฐ์ํ
'๐ CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CleanCode]ํด๋์ค 1 (0) | 2024.10.08 |
---|---|
[CleanCode]๋จ์ ํ ์คํธ (2) | 2024.10.03 |
[CleanCode]๊ฒฝ๊ณ 1 (1) | 2024.10.01 |
[CleanCode]์ค๋ฅ์ฒ๋ฆฌ-์ ์ ํ๋ฆ์ ์ ์ํ๋ผ (0) | 2024.09.28 |
[CleanCode]์ค๋ฅ์ฒ๋ฆฌ-์์ธ์ฌ์ฉ๋ฒ (0) | 2024.09.27 |