๐ 2024. 04. 12 84์ผ์ฐจ
1) TRACE
๊ฐ์ฅ ์์ธํ ๋ก๊ทธ ๋ ๋ฒจ๋ก, ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ํ๋ฆ๊ณผ ๋๋ฒ๊น
์ ๋ณด๋ฅผ ์์ธํ ๊ธฐ๋กํ๋ค. ์ฃผ๋ก ๋๋ฒ๊น
์์ ์ฌ์ฉ๋๋ค.
2) DEBUG
๋๋ฒ๊น
๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋ฐ ๋จ๊ณ์์ ์์ธํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๋ด๋ถ ๋์์ ์ดํดํ๊ณ ๋ฌธ์ ๋ฅผ ๋ถ์ํ๋ ๋ฐ ๋์์ ์ค๋ค.
3) INFO
์ ๋ณด์ฑ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ์ฃผ์ ์ด๋ฒคํธ๋ ์คํ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
4) WARN
๊ฒฝ๊ณ ์ฑ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ค.
์์์น ๋ชปํ ๋ฌธ์ ๋ ์ ์ฌ์ ์ธ ์ค๋ฅ ์ํฉ์ ์๋ฆฌ๋ ๋ฉ์์ง์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ด ์ ์์ ์ผ๋ก ๋์ํ์ง๋ง ์ฃผ์๊ฐ ํ์ํ ์ํฉ์ ์๋ ค์ค๋ค.
5) ERROR
์ค๋ฅ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ค.
์ฌ๊ฐํ ๋ฌธ์ ๋๋ ์์ธ ์ํฉ์ ๋ํ๋ด๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์์ ์ธ ๋์์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ฌธ์ ๋ฅผ ์๋ฆฐ๋ค.
6) FATAL
๊ฐ์ฅ ์ฌ๊ฐํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๋์์ ์ค๋จ์ํฌ ์ ์๋ ์น๋ช
์ ์ธ ์ค๋ฅ๋ฅผ ๋ํ๋ธ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ค๋ฅ๋ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋ ๋งค์ฐ ์ด๋ ค์ด ์ํฉ์ ์๋ฏธํ๋ค.
๋ก๊ทธ ๋ ๋ฒจ์ ๋ก๊น ์์คํ ์ ์ค์ ์ ํตํด ์ง์ ํ๋ฉฐ, ์ค์ ๋ ๋ก๊ทธ ๋ ๋ฒจ ์ด์์ ์ค์๋๋ฅผ ๊ฐ์ง ๋ก๊ทธ ๋ฉ์์ง๋ง ๊ธฐ๋ก๋๋ค.
์๋ฅผ ๋ค์ด, ๋ก๊ทธ ๋ ๋ฒจ์ 'DEBUG'๋ก ์ค์ ํ๋ฉด 'TRACE'๋ณด๋ค ์ค์ํ 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL' ๋ก๊ทธ ๋ฉ์์ง๊ฐ ๊ธฐ๋ก๋์ง๋ง, 'TRACE' ์์ค์ ๋ก๊ทธ๋ ๊ธฐ๋ก๋์ง ์๋๋ค.
์๋๋ log4j.xml์ ๋ก๊น ์์คํ ์ค์ ์์ด๋ค.
<!-- Application Loggers -->
<logger name="edu.test.comm">
<!-- trace < debug < info < warn <error <tatal debug ์ด์์ ๋ชจ๋ ์ฐํ -->
<level value="debug" />
<appender-ref ref="dailyRollingFile"/>
</logger>
public class SampleRecord {
private final String name;
private final Integer age;
private final Address address;
public SampleRecord(String name, Integer age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public Address getAddress() {
return address;
}
}
์์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. ํด๋น ํด๋์ค๋ ๋ชจ๋ ์ธ์คํด์ค ํ๋๋ฅผ ์ด๊ธฐํํ๋ ์์ฑ์๊ฐ ์๊ณ , ๋ชจ๋ ํ๋๋ final๋ก ์ ์๋์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ ํ๋์ getter๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฌํ ํด๋์ค ๊ฐ์ ๊ฒฝ์ฐ๋ record ํ์ ์ ํด๋์ค๋ก ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
public record SampleRecord(
String name,
Integer age,
Address address
) {}
ava 8๋ถํฐ ์ถ๊ฐ๋ ๊ธฐ์ ๋ก ๋๋ค๋ฅผ ํ์ฉํด ๋ฐฐ์ด๊ณผ ์ปฌ๋ ์
์ ํจ์ํ์ผ๋ก ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๊ธฐ์ ์ด๋ค.
๊ธฐ์กด์ for๋ฌธ๊ณผ Iterator๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ๊ธธ์ด์ ธ์ ๊ฐ๋
์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ฉฐ ๋ฐ์ดํฐ ํ์
๋ง๋ค ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ค๋ค์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ถ์ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ฅผ ์ ์ํด ๋์์ ๋ฐ์ดํฐ ์์ค์ ์๊ด์์ด ๋ชจ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ค๋ฃฐ ์ ์์ผ๋ฏ๋ก ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
Stream<Integer> ๋์ IntStream์ด ์ ๊ณต๋์ด์ ์คํ ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ ๋ฑ์ ๋ถํ์ํ ๊ณผ์ ์ด ์๋ต๋๊ณ ์ซ์์ ๊ฒฝ์ฐ ์ ์ฉํ ๋ฉ์๋๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํ๋ค. (.sum(), .average() ๋ฑ)