TODO
tiny에디터로 받은 파일(사진)을 db에 저장하는 법logging 시스템?post.html에 유저 이미지가져오기비밀번호 암호화
운영 중인 웹이 문제가 발생했을 경우, 문제의 언인을 파악하려면 문제가 발생했을 때 당시의 정보가 필요함.
=> 당시의 정보를 얻기 위해서 Exception이 발생했거나, 중요 기능이 실행되는 부분에서는 적절한 로그를 남겨 주는것이 필요.
수행하려는 작업 | 작업을 위한 도구 |
---|---|
명령행 스크립트 또는 프로그램의 일반적인 사용을 위한 콘솔 출력 표시 | print() |
프로그램의 정상 작동 중에 발생하는 이벤트 보고(상태 모니터링이나 결함 조사) | logging.info()(또는 진단 목적의 아주 자세한 출력은 logging.debug()) |
특정 실행시간 이벤트와 관련하여 경고를 발행 | 라이브러리 코드에서 warnings.warn(): 문제를 피할 수 있고 경고를 제거하기 위해 클라이언트 응용 프로그램이 수정되어야 하는 경우, logging.warning(): 클라이언트 응용 프로그램이 할 수 있는 일이 없는 상황이지만 이벤트를 계속 주목해야 하는 경우 |
특정 실행시간 이벤트와 관련하여 에러를 보고 | 예외를 일으킵니다 |
예외를 발생시키지 않고 에러의 억제를 보고 (가령 장기 실행 서버 프로세스의 에러 처리기) | 구체적인 에러와 응용 프로그램 영역에 적절한 logging.error(), logging.exception(), logging.critical() |
수준 | 사용할 때 |
---|---|
DEBUG | 상세한 정보. 보통 문제를 진단할 때만 필요합니다. |
INFO | 예상대로 작동하는지에 대한 확인. |
WARNING | 예상치 못한 일이 발생했거나 가까운 미래에 발생할 문제(예를 들어 ‘디스크 공간 부족’)에 대한 표시. 소프트웨어는 여전히 예상대로 작동합니다. |
ERROR | 더욱 심각한 문제로 인해, 소프트웨어가 일부 기능을 수행하지 못했습니다. |
CRITICAL | 심각한 에러. 프로그램 자체가 계속 실행되지 않을 수 있음을 나타냅니다. |
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
# 로그생성
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
이제 파일을 열고 내용을 살펴본다면, 아래의 로그 메시지를 찾을 수 있습니다:
DEBUG:root:This message should go to the log file
INFO:root:So should this
WARNING:root:And this, too
@app.route('/post/image', methods=['POST'])
def post_image():
f = request.files['file']
f.save('static/image/post/' + f.filename)
url = "static/image/post/" + f.filename
return jsonify({'url': url})
input.onchange = function () {
var file = this.files[0];
const formData = new FormData();
formData.append('file', file);
$.ajax({
type:"POST",
url:"/post/image",
cache: false,
contentType: false,
processData: false,
data: formData,
success: function (response) {
console.log(response['url'])
cb(response['url'],{title:file.name})
}
})
};
db = pymysql.connect(
user='',
password='',
host='',
port=3306,
database='project2b2',
charset='utf8'
)
curs = db.cursor()
userId = request.form['id']
password = request.form['password']
hash = bcrypt.generate_password_hash(password).decode('utf-8')
userName = request.form['name']
email = request.form['email']
print(hash)
sql = f'INSERT INTO `user` (id, password, name, email) VALUES("{userId}", "{hash}", "{userName}", "{email}");'
curs.execute(sql) # 데이터베이스에 넣어주기 위함
db.commit() # 삽입,삭제,수정할때, 최종적으로 데이터베이스를 만져줄때만
db.close()
return jsonify({'msg': '회원 가입 성공'})
<img
class="profile-image"
src="../static/image/user/{{session['image']}}"
alt="타이틀로고"
/>