entgo는 JPA처럼 ORM이다.
JPA에서 .properties
를 활용하여 ORM이 자동 생성하는 쿼리를 로깅하는 것 처럼 entgo도 해당 기능을 제공한다. 문서화가 좋지 않을 뿐이지만...
다음은 entgo가 자동 생성하는 쿼리마다 어떤 쿼리가 나오는지 터미널에 로깅하는 기능, 그리고 그 쿼리가 얼마나 실행 시간이 걸렸는지를 로깅하는 기능이 있는 코드다.
func createEntClient(master *sql.Driver, replica *sql.Driver) *ent.Client {
return ent.NewClient(
ent.Driver(
&db.Drivers{
Master: master,
Replica: replica,
},
),
ent.Debug(),
ent.Log(
func(query ...any) {
start := time.Now()
duration := time.Since(start)
log.Printf("took: %v , entgo: %v ", duration, query)
},
),
)
}