[개발] nodejs + steem-js 로깅 처리와 DB(mysql)설치 및 설정 3편
자꾸 포스팅을 섞어서 하게 됩니다. 원래 계획은 집에서는 비트코인 코어를 회사 점심시간과 잠깐 잠깐의 휴식시간엔 다른 개발 포스팅을 그리고 문득문득 생각나는 일상 글들을... 이렇게 3개 테마를 가지고 쭈욱 가려고 했지요.
그런데 요즘 집에서는 거의 포스팅을 할수가 없네요. 오늘은 이 nodejs 프로젝트에 로깅처리 부분과 DB 연동 부분을 해보겠습니다. 빨리 만들고 싶나요?
원래 밥도 배고플때까지 기다렸다가 먹어야 맛있고, 응가도... ㅋㅋ 자 계속해서 설정을 시작해봅시다.
1. node.js에 로깅을 적용해보자.
로깅을 적용해야만 특정 예외상황이나 프로그램의 실행중인 내용에 대해 로그를 남겨 나중에 문제가 생겼을 때 그 기록을 보고 추적하여 해결 할 수 있겠죠?
로깅 요구조건은 단순합니다.
- 날짜별로 [로그.log.날짜]와 같은 형태로 남기자.
- 에러인 경우 error 레벨로 남겨 [에러.log.날짜] 로 별도로 남기자.
첫번째. winston과 winston-daily-rotate-file를 설치합니다.
npm install winston --save
npm install winston-daily-rotate-file --save
두번째. app.js 내 첫 부분에 아래 내용 추가
// winston log init!
var winston = require('winston');
require('winston-daily-rotate-file');
const tsFormat = () => (new Date()).toLocaleTimeString();
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ timestamp: tsFormat }),
new (winston.transports.DailyRotateFile)({
// filename property 지정
name : 'log'
, filename: '/log/log.log'
, datePattern: '.yyyy-MM-dd'
, prepend: false
, timestamp: tsFormat
, level: 'info'
, json:false
}),
new (winston.transports.DailyRotateFile)({
name : 'error_log'
, filename: '/log/error.log'
, datePattern: '.yyyy-MM-dd'
, prepend: false
, timestamp: tsFormat
, level : 'error'
, json:false
})
]
});
logger.log('info', 'log!!!');
logger.info('info');
logger.error('error logs');
// winston log init end.
이제 'console.log' 대신 logger.debug, info, error 등을 이용해서 로그를 남기면 파일에 기록되어 쉽게 이슈를 찾아 수정하거나 대응할 수 있게 되었습니다.
파일에 남겨진 로그.
2. node.js에서 DB연동을 해보자.
DB연동을 많이 할것이라고 보이진 않지만 봇이 작동하는데 대해서 보팅을 해야할 계정에 대한 화이트리스트와 하지 말아야할 블랙 리스트를 관리한다거나 스팀 블럭체인을 읽어들였던 블록 ID값을 저장한다던지에 대한 몇몇의 기록을 하는데 아주 심플한 DB가 있으면 좋을 것 같습니다.
ludorum님이 leveldb를 추천해주셨지만 그냥 익숙하고 마니 쓰는 mysql로 해보겠습니다. ㅋㅋ
https://dev.mysql.com/downloads/
세계에서 가장 유명하다고 하잖습니까. ㅋㅋ
1. 다운로드부터 시작
여기서 다운로드를 클릭!
중간에 오라클 로그인이 있으니 회원가입을 하고 다운받읍시다. 64bit, 32bit 구분해서요. 저는 예시로 하는 PC가 32bit 이므로 mysql-5.7.21-win32.zip을 받았습니다.
2. Path를 등록!
용량이 생각보다 크네요. 다운로드가 완료되면 적당한 곳에 압축을 풉니다. 그 다음 경로를 등록해봅시다. 그 다음 mysql을 시작해봅시다. 편리하게 작업하기 위해 path에 등록해놓으면 편리합니다. Win key + Pause
를 누르면 시스템 속성이 뜨고 고급 → 시스템 변수 → 새로 만들기
그리고 Path 값에 ;%MYSQL%;
을 추가합니다.
그리고 시작을 하면... 이렇게 에러가 나는데...
D:\develop\mysql-5.7.21-win32\bin>mysqld
mysqld: Can't change dir to 'D:\develop\mysql-5.7.21-win32\data\' (Errcode: 2 -
No such file or directory)
저 곳에 'data'폴더를 생성하고
3. mysql 초기화 작업
cmd 창을 통해 'mysqld --initialize --console' 를 먼저 시작해줍니다.여기서 초기화가 되면서 임시 패스워드가 나오니 꼭 다른곳에 저장해야합니다.
4. mysqld --install 로 mysql을 설치한다.
5. mysql 서비스 시작
그리고 관리도구의 서비스를 보면 mysql이 되어있으니 '시작'을 눌러 서비스를 시작해준다!
6. mysql 서비스 포트 확인
서비스를 시작했으니 cmd 창에서 netstat -an | more로 3306 포트가 열려있으면 서비스가 정상 시작되었다고 생각하면 될듯 하다.
7. mysql 접속 및 계정 생성과 권한 부여
이제 접속을 해보자. cmd 창에서 mysql -u root -p를 입력하고 아까 5번에서 튀어나온 임시 비번으로 로그인하면 된다.
Enter password: ************
그담 root 비번을 바꾸면 되는데. 아래 스크립트로 바꾸면 된다.
set password = password('변경할비밀번호');
언제나 mysql은 그렇듯... show databases;로 한번 날려본다.
그담은 nodejs에서 사용할 영역을 만들어줘야 합니다. 음... steem_nhj 로 하겠습니다. ㅋㅋㅋ create database steem_nhj
새로운 계정을 만들어봅니다.
create user 'steem_nhj'@'localhost' identified by '비번';
이제 계정에 권한을 주고...
grant all privileges on steem_nhj.* to 'steem_nhj'@'localhost' ;
새로운 계정으로 접속을 해봅니다. 아까 만든 비번으로 접속하면 되구요.
mysql -u steem_nhj -p
헠..헠... 역시나 환경 세팅이 가장 힘든것 같습니다. 여기까지 하고 다음에 마저 진행해보도록 하겠습니다. 다음시간엔 테스트 테이블을 만들고 nodejs에서 crud 작업(데이터 등록, 조회, 수정, 삭제)을 해보도록 하겠습니다. 물론 리눅스에서도 동일한 환경을 갖추도록 구성도 해야겠지요.
지난 회차 살펴보기
1편 - nodejs 개발환경을 구성해보자. 윈도우 개발 + Github 저장소 + 리눅스 운영
2편 - 콜백 지옥을 탈출해보자. - synchronize.js 편
ps. 스팀은 하락장에서도 정말 대단하네요. 이런 대하락장에서 4달러 수준이라니... 미래가 밝다고 생각합니다.
스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.
좋은 정보임에는 틀림없는데 뭔말인지 감이 안잡히네요.
아무래도 관련 지식이 필요할 것 같습니다 ㅠ.ㅠ 그냥 아무런 지식없이 이해하기는 다소 힘들겠죠 ^^ ;;
역시나 제가 접할 수 없는 어려운 내용.ㅠ
그래도 잘 보고 갑니다.ㅎ
저도 내용이 잘 이해는 안가지만잘 보고 갑니다 ^^
흐흐흐흐 리스팀해두어야겠습니다 이 시리즈물은 2월 중순부터 시작해보려구요 ㅎㅎ
이번 편을 끝내면 어떤 능력이 늘어날지 ㅎㅎㅎ
스팀에 있는 봇들은 대부분 만드실수잇고 만들고싶은 봇도 만드실수 있을겁니당. 단지 제가 nodejs를 첨 쓰는것나 능숙하지 못해 문제입니다~
역시 !!!
이번 강의도 너무너무 기대됩니다 :)
이번거는 제가 잘 알지 못하는 node.js이니 강의가 아니라 제가 공부하는 것을 공유한다는 개념입니다. ^^; 아마 자바로 했으면 능숙한 코칭과 코딩, 포스팅이 가능했겠지만 저...저도 다른것도 해보고 싶다구요! ㅎㅎㅎ 이번 시리즈는 상당히 길게 갈거 같습니다. ㅎㅎㅎ
넵넵 저도 천천히 심도있게 따라가보겠습니다!!
백엔드 쪽에 관심이 있어서 node.js 를 슬슬 봐야할 것 같았는데, 적절한 타이밍에 좋은 글 올려주셔서 감사드립니다. 종종 참고하겠습니다. :)
감사합니다.~^^
좋은 자료 감사합니다.
저에게 많은 도움이 될것 같습니다
행복한 금요일 오후 되세요~
잘 보고 있습니다!!
nodejs 새로 배우면서 공부중인데 팔로우 하고 도움 많이 받겠습니다~
너무 어렵습니다 ㅠ.ㅠ 자바스크립트는 무리인가...