질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

로그파일 내용 DB에 저장하는 방법 문의드립니다.

작성자 정보

  • 멍멍 작성
  • 작성일

컨텐츠 정보

본문

안녕하세요
리눅스 입문한지 얼마 안되는 초보입니다.

로그파일에 있는 특정 row를 db에 저장하고 싶습니다.
data.log 파일에서 hint라고 떨어지는 로우를 찾아서 mysql test db의 Log테이블에 저장하고 싶습니다.

그래서 실행한 것은 아래와 같습니다.

tail -f /var/data/data.log | grep hint | \
while read e; do \
mysql -uroot -ppassword -e "INSERT INTO test.Log (col1, col2) VALUES (\"'${e}'\", NOW());"; done

무엇이 잘못되었는지 실행이 안되네요 ㅠㅠ
어떤 부분을 수정하면 좋을 지 도움 부탁드립니다.

감사합니다.

관련자료

댓글 1

Jszzang님의 댓글

  • Jszzang
  • 작성일
유사하게 셋팅해서 테스트해 보았습니다.
일단 아래 코드로 저는 증분되는 파일에서 특정 문자가 잡힐때 해당 라인 전부를 DB저장되도록 했습니다.
전체라인이 아니라면 awk로 잘라서 넣으시면 될거같습니다.

 vi action.sh
+-----------------------------------------------------------------------------------+
#!/bin/bash

tail -fn0 /root/script/data.log | while read line ; do
  echo "$line" | grep "hint"
  if [ $? = 0 ]
  then
    #Action
    mysql -ujszzang -pxx -e "INSERT INTO test.Log (hint,lastday) VALUES ('$line',NOW()) "
  fi
done
+-----------------------------------------------------------------------------------+


mysql> select * from Log order by lastday desc;
+----------+---------------------+
| hint    | lastday            |
+----------+---------------------+
| hint 130 | 2015-12-22 14:23:52 |
| hint 10  | 2015-12-22 14:23:12 |
| hint 10  | 2015-12-22 14:23:05 |
| hint 10  | 2015-12-22 13:04:30 |
| hint 10  | 2015-12-22 13:04:25 |
| hint 10  | 2015-12-22 13:04:24 |
| hint 10  | 2015-12-22 13:04:23 |
| hint 10  | 2015-12-22 13:03:44 |
+----------+---------------------+

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  109 명