1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-05-11 17:34:56 +00:00

Merge pull request from haiwen/onlyoffice-cache-log

Onlyoffice cache log
This commit is contained in:
Daniel Pan 2021-07-02 17:00:36 +08:00 committed by GitHub
commit cbc99a161d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 6 deletions

View File

@ -21,7 +21,7 @@ from seahub.onlyoffice.settings import ONLYOFFICE_APIJS_URL, \
ONLYOFFICE_FORCE_SAVE, ONLYOFFICE_JWT_SECRET
# Get an instance of a logger
logger = logging.getLogger(__name__)
logger = logging.getLogger('onlyoffice')
def generate_onlyoffice_cache_key(repo_id, file_path):
@ -33,6 +33,8 @@ def generate_onlyoffice_cache_key(repo_id, file_path):
def get_onlyoffice_dict(request, username, repo_id, file_path, file_id='',
can_edit=False, can_download=True):
logger.info('{} open file {} in repo {}'.format(username, file_path, repo_id))
repo = seafile_api.get_repo(repo_id)
if repo.is_virtual:
origin_repo_id = repo.origin_repo_id
@ -65,9 +67,11 @@ def get_onlyoffice_dict(request, username, repo_id, file_path, file_id='',
else:
document_type = 'text'
cache_key = generate_onlyoffice_cache_key(repo_id, file_path)
cache_key = generate_onlyoffice_cache_key(origin_repo_id, origin_file_path)
doc_key = cache.get(cache_key)
logger.info('get doc_key {} from cache by cache_key {}'.format(doc_key, cache_key))
# temporary solution when failed to get data from cache(django_pylibmc)
# when init process for the first time
if not doc_key:
@ -79,11 +83,13 @@ def get_onlyoffice_dict(request, username, repo_id, file_path, file_id='',
if not doc_key:
info_bytes = force_bytes(origin_repo_id + origin_file_path + file_id)
doc_key = hashlib.md5(info_bytes).hexdigest()[:20]
logger.info('generate new doc_key {} by info {}'.format(doc_key, info_bytes))
doc_info = json.dumps({'repo_id': repo_id,
'file_path': file_path,
doc_info = json.dumps({'repo_id': origin_repo_id,
'file_path': origin_file_path,
'username': username})
cache.set("ONLYOFFICE_%s" % doc_key, doc_info, None)
logger.info('set doc_key {} and doc_info {} to cache'.format(doc_key, doc_info))
file_name = os.path.basename(file_path.rstrip('/'))
doc_url = gen_file_get_url(dl_token, file_name)

View File

@ -16,7 +16,7 @@ from seahub.utils.file_op import if_locked_by_online_office
# Get an instance of a logger
logger = logging.getLogger(__name__)
logger = logging.getLogger('onlyoffice')
@csrf_exempt
@ -94,6 +94,8 @@ def onlyoffice_editor_callback(request):
file_path = doc_info['file_path']
username = doc_info['username']
logger.info('status {}: get doc_info {} from cache by doc_key {}'.format(status, doc_info, doc_key))
cache_key = generate_onlyoffice_cache_key(repo_id, file_path)
# save file
@ -131,6 +133,7 @@ def onlyoffice_editor_callback(request):
# 2 - document is ready for saving,
if status == 2:
logger.info('status {}: delete cache_key {} from cache'.format(status, cache_key))
cache.delete(cache_key)
if is_pro_version() and if_locked_by_online_office(repo_id, file_path):
@ -139,11 +142,13 @@ def onlyoffice_editor_callback(request):
# 6 - document is being edited, but the current document state is saved,
if status == 6:
# cache document key when forcesave
cache.set(cache_key, doc_key)
logger.info('status {}: set cache_key {} and doc_key {} to cache'.format(status, cache_key, doc_key))
cache.set(cache_key, doc_key, None)
# 4 - document is closed with no changes,
if status == 4:
logger.info('status {}: delete cache_key {} from cache'.format(status, cache_key))
cache.delete(cache_key)
if is_pro_version() and if_locked_by_online_office(repo_id, file_path):

View File

@ -600,6 +600,14 @@ LOGGING = {
'backupCount': 5,
'formatter': 'standard',
},
'onlyoffice_handler': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(LOG_DIR, 'onlyoffice.log'),
'maxBytes': 1024*1024*100, # 100 MB
'backupCount': 5,
'formatter': 'standard',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
@ -622,6 +630,11 @@ LOGGING = {
'level': 'INFO',
'propagate': False
},
'onlyoffice': {
'handlers': ['onlyoffice_handler', ],
'level': 'INFO',
'propagate': False
},
}
}