1.1 ๋ก๊ทธ ์๊ฐ
๋ก๊ทธ๋ ๋ฐ์ํ ์ด๋ฒคํธ ๋ชฉ๋ก์ ๋๋ค. ํด์ ์ ๋์ด๋ ์ผ๊ธฐ์ ๊ฑฐ์ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ๋ก๊ฑฐ๋ ๊ธฐ๋กํ ์ ์๋ ๊ฐ์ฒด์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๊ธฐ๋กํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Java์์๋ ๋ชจ๋ ๊ฒ์ด ์ด์ ๊ฐ์ผ๋ฉฐ ์กฐ๊ธ ๋ ๋ง์ต๋๋ค.
์ฌ์ค Java ํ๋ก๊ทธ๋จ์ UI, ์ฝ์ ๋ฑ์ด ์๋ ๋ํ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋งค์ฐ ๋ง์ต๋๋ค. ๋์์ ์์ฒ ๋ช ์ ์ฌ์ฉ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉฐ ์ข ์ข ๋ค์ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ํนํ ์๋ก ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์๋ก ๊ฐ์ญํ๊ธฐ ์์ํ๋ ๊ฒฝ์ฐ.
๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ๊ทธ๋ฌํ ์ํฉ์์ ๊ฑฐ์ ์ฌํ๋์ง ์๋ ์ค๋ฅ์ ์คํจ๋ฅผ ์ฐพ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๊ฐ ์ค๋ ๋์์ ๋ฐ์ํ๋ ๋ชจ๋ ์ผ์ ๋ก๊ทธ/ํ์ผ์ ๊ธฐ๋กํ๋ ๊ฒ์ ๋๋ค .
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํธ์ถ๋ ๋ฉ์๋์ ๋งค๊ฐ ๋ณ์, ์ฐจ๋จ๋ ๋ชจ๋ ์ค๋ฅ ๋ฐ ๋ง์ ์ค๊ฐ ์ ๋ณด์ ๋ํ ์ ๋ณด๊ฐ ๋ก๊ทธ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๋ก๊ทธ๊ฐ ์์ ํ ์๋ก ์ด๋ฒคํธ ์ํ์ค๋ฅผ ๋ณต์ํ๊ณ ์คํจ ๋๋ ์ค๋ฅ์ ์์ธ์ ์ถ์ ํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
๊ทธ๋ฌ๋ ๋ก๊ทธ๊ฐ ํด์๋ก ์์ ํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค. ๋๋๋ก ๋ก๊ทธ๋ ํ๋ฃจ์ ๋ช ๊ธฐ๊ฐ๋ฐ์ดํธ์ ๋๋ฌํฉ๋๋ค. ์ด๊ฑด ๊ด์ฐฎ์.
1.2 ์คํจํ ๋ก๊ทธ
์ฒซ ๋ฒ์งธ ๋ก๊ทธ๋ก ๊ฐ๋ฐ์๋ ๋จ์ํ ์ฝ์์ ์ถ๋ ฅ์ ์ฌ์ฉํ์ต๋๋ค . ๋ชจ๋ ์ค์ํ ์ ๋ณด์ ๋ณ์ ๊ฐ์ด ์ฝ์์ ๊ธฐ๋ก๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ฒ๊น ์ค์ ์ด ์์ ์ ์ํํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ก๊ทธ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์์ ์ธ ์๋ ์ค์๋ ์์ ํ ์ ์ฉํ ์ ์์ต๋๋ค.
์ฒซ์งธ, ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฝ์ ์์ฒด์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ๋ฅผ ์ํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์๋ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ ์๋น์ค ์ ๋ณด๋ฅผ ์ ํ ๋ณด๊ณ ์ถ์ดํ์ง ์์ต๋๋ค.
๋์งธ, ์ฝ์ ๋ฒํผ์ ํฌ๊ธฐ๊ฐ ์ ํ๋์ด ์์ผ๋ฏ๋ก ๊ฑฐ๊ธฐ์ ๋ง์ด ์ธ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ ์งธ, ์ฅ๊ธฐ๊ฐ์ ๊ฑธ์ณ ์์ง๋ ํ๋ก๊ทธ๋จ ์ค๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์์๊ฒ ์ ๋ฌํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ์ ๋ณด๋ฅผ ํ ๋ฒ์ ํ์ผ์ ์ฐ๋ ๊ฒ์ด ๊ฐ์ฅ ํธ๋ฆฌํฉ๋๋ค.
๊ฐ๋ฐ์๋ค์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ค์ ๋ ๋ค๋ฅธ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์๊ฐํด ๋์ต๋๋ค System.err
. ์ฌ๊ธฐ์ ๋ฉ์์ง๋ฅผ ์ธ ์ ์์ผ๋ฉฐ ํ์ค ์ฝ์์ด ์๋ ๋ณ๋์ ์ค๋ ๋๋ก ์ ์ก๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ผ ์ฐ๊ธฐ ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ต๋๋ค.
// Define the file to which we will write the log
System.setErr(new PrintStream(new File("log.txt")));
// Display messages
System.err.println("Message 1");
System.err.println("Message 2");
// Display an error message
try {
throw new Exception("Error message");
} catch (Exception e) {
e.printStackTrace();
}
ํ์ง๋ง ์ด ํํ๋ก๋ ๋ชจ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ํ์ผ์ ๊ธฐ๋กํ๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ ๋ ํ๋ช ํ ๋ฐฉ์์ผ๋ก ์ด๋ฅผ ์ํํ์ผ๋ฉฐ ๊ธฐ๋ก๋ ์ด๋ฒคํธ ๋ฐ ๋ฐ์ดํฐ์ ๋ํ ํํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ์ ์ฐ์ฑ์ ํ์ฉํ์ต๋๋ค.
์ค์ ๋ก ์ ์ฒด ๋ก๊น ํ๋ก์ธ์ค๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ์ ๋ณด ์์ง ์ ๋๋ค .
- ๋ ๋ฒ์งธ ๋ถ๋ถ์ ์์ง๋ ์ ๋ณด์ ํํฐ๋ง ์ ๋๋ค.
- ์ธ ๋ฒ์งธ ๋ถ๋ถ์ ์ ํํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ ๊ฒ ์ ๋๋ค.
1.3 log4j ๋ก๊ฑฐ ์๊ฐ
Java ์ปค๋ฎค๋ํฐ์์ ์ฒ์์ผ๋ก ์ธ๊ธฐ ์๋ ๋ก๊ฑฐ๋ log4j
. ํ๋ก์ ํธ์ ํฌํจํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ด๋ฅผ ์ํด pom.xml์ ๋ช ์ค๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>2.2.17</version>
</dependency>
์ด๋ฌํ ๋ก๊ฑฐ์ ํ๋ก๊ทธ๋จ์ ์ํธ ์์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class Manager {
private static final Logger logger = LoggerFactory.getLogger(Manager.class);
public boolean processTask(Task task) {
logger.debug("processTask id = " + task.getId());
try {
task.start();
task.progress();
task.complete();
return true;
} catch (Exception e) {
logger.error("Unknown error", e);
return false;
}
}
}
์ฌ๊ธฐ์์ ์ธ ๊ฐ์ง ์ผ์ด ๋ฐ์ํฉ๋๋ค.
๊ฐ์ฒด ์์ฑ์ด ๋
น์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค Logger
. ๊ฐ์ฒด๋ ํธ๋ฆฌํ ์ถ๊ฐ ์์
์ ์ํด ์ ์ ๋ณ์์ ์ ์ฅ๋ฉ๋๋ค. ๋ํ getLogger()
์ ๋ณด๊ฐ ์์ง๋ ํด๋์ค์ ๋ํ ์ ๋ณด๋ ๋ฉ์๋์ ์ ๋ฌ๋ฉ๋๋ค.
ํ๋์์ผ๋ก ๊ฐ์กฐ ํ์๋ ์ค์ ๋๋ฒ๊น
์ค์๋ง ๊ฐ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ ๊ณณ์
๋๋ค . ์ด๋ฅผ ์ํด ํน๋ณํ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ๋ฉ๋๋ค.debug()
๋ง์ง๋ง์ผ๋ก ๋ฐ์ํ ์์ธ๋ฅผ ๋ก๊ทธ์ ์ ์ฅํ๋ ์ค์ด ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค . ์์ธ๋ ์ ์ฌ์ ์ค๋ฅ์ด๋ฏ๋ก error()
.
GO TO FULL VERSION