add setting's option to log errors to files

pull/330/head
Abdullah Alfaraj 2023-07-06 16:08:28 +03:00
parent 570e0c7dce
commit 2948dad4e3
2 changed files with 126 additions and 55 deletions

View File

@ -78,26 +78,18 @@ const {
const io = require('./utility/io') const io = require('./utility/io')
const should_log = true function setLogMethod(should_log_to_file = true) {
if (should_log) { let timer_id
setInterval(async () => { if (should_log_to_file) {
await io.deleteFileIfLargerThan('log.txt', 200)
}, 2 * 60 * 1000)
window.addEventListener('error', (event) => {
const [a, b, c, d, e] = [1, 2, 3, 4, 5]
console.log(`message: ${a}`)
console.log(`source: ${b}`)
console.log(`lineno: ${c}`)
console.log(`colno: ${d}`)
console.log(`error: ${e}`)
})
console.log = (data, ...optional_param) => { console.log = (data, ...optional_param) => {
try { try {
_log(data, ...optional_param) _log(data, ...optional_param)
// const error = new Error({ data, ...optional_param }); // const error = new Error({ data, ...optional_param });
const formattedOutput = logger.formateLog(data, ...optional_param) const formattedOutput = logger.formateLog(
data,
...optional_param
)
io.IOLog.saveLogToFile({ log: formattedOutput }, 'log.txt') io.IOLog.saveLogToFile({ log: formattedOutput }, 'log.txt')
} catch (e) { } catch (e) {
_warn('error while logging: ') _warn('error while logging: ')
@ -110,7 +102,10 @@ if (should_log) {
_warn(data, ...optional_param) _warn(data, ...optional_param)
const error = new Error() const error = new Error()
const stackTrace = error.stack const stackTrace = error.stack
const formattedOutput = logger.formateLog(data, ...optional_param) const formattedOutput = logger.formateLog(
data,
...optional_param
)
io.IOLog.saveLogToFile( io.IOLog.saveLogToFile(
{ warning: formattedOutput, stackTrace }, { warning: formattedOutput, stackTrace },
'log.txt' 'log.txt'
@ -126,7 +121,10 @@ if (should_log) {
_error(data, ...optional_param) _error(data, ...optional_param)
const error = new Error() const error = new Error()
const stackTrace = error.stack const stackTrace = error.stack
const formattedOutput = logger.formateLog(data, ...optional_param) const formattedOutput = logger.formateLog(
data,
...optional_param
)
io.IOLog.saveLogToFile( io.IOLog.saveLogToFile(
{ error: formattedOutput, stackTrace }, { error: formattedOutput, stackTrace },
'log.txt' 'log.txt'
@ -136,8 +134,13 @@ if (should_log) {
_error(e) _error(e)
} }
} }
} else {
console.log = _log
console.warn = _warn
console.error = _error
} }
}
setLogMethod(settings_tab_ts.store.data.should_log_to_file)
// const ultimate_sd_upscaler_script_test = require('./ultimate_sd_upscaler/dist/main') // const ultimate_sd_upscaler_script_test = require('./ultimate_sd_upscaler/dist/main')
// const { // const {

View File

@ -3,9 +3,11 @@ import ReactDOM from 'react-dom/client'
import { observer } from 'mobx-react' import { observer } from 'mobx-react'
import { AStore } from '../main/astore' import { AStore } from '../main/astore'
import { SpMenu } from '../util/elements' import { SpCheckBox, SpMenu } from '../util/elements'
import Locale from '../locale/locale' import Locale from '../locale/locale'
import globalStore from '../globalstore' import globalStore from '../globalstore'
import { io } from '../util/oldSystem'
import { reaction } from 'mobx'
// import { Jimp } from '../util/oldSystem' // import { Jimp } from '../util/oldSystem'
declare const Jimp: any // make sure you import jimp before importing settings.tsx declare const Jimp: any // make sure you import jimp before importing settings.tsx
@ -33,8 +35,62 @@ const interpolationMethods: InterpolationMethod = {
export const store = new AStore({ export const store = new AStore({
scale_interpolation_method: interpolationMethods.bilinear, scale_interpolation_method: interpolationMethods.bilinear,
should_log_to_file: false,
delete_log_file_timer_id: null,
}) })
function onShouldLogToFileChange(event: any) {
try {
const should_log_to_file: boolean = event.target.checked
store.data.should_log_to_file = should_log_to_file
if (should_log_to_file && !store.data.delete_log_file_timer_id) {
store.data.delete_log_file_timer_id = setDeleteLogTimer()
} else {
//don't log and clear delete file timer
try {
store.data.delete_log_file_timer_id = clearInterval(
store.data.delete_log_file_timer_id
)
} catch (e) {
console.warn(e)
}
}
//@ts-ignore
setLogMethod(should_log_to_file)
} catch (e) {
console.warn(e)
}
}
function setDeleteLogTimer() {
const timer_id = setInterval(async () => {
await io.deleteFileIfLargerThan('log.txt', 200)
}, 2 * 60 * 1000)
console.log('setDeleteLogTimer() timer_id :', timer_id)
return timer_id
}
// reaction(
// () => {
// return store.data.should_log_to_file
// },
// (should_log_to_file) => {
// if (should_log_to_file && !store.data.delete_log_file_timer_id) {
// store.data.delete_log_file_timer_id = setDeleteLogTimer()
// } else {
// //don't log and clear delete file timer
// try {
// store.data.delete_log_file_timer_id = clearInterval(
// store.data.delete_log_file_timer_id
// )
// } catch (e) {
// console.warn(e)
// }
// }
// //@ts-ignore
// setLogMethod(should_log_to_file)
// }
// )
const Settings = observer(() => { const Settings = observer(() => {
return ( return (
<div style={{ width: '100%' }}> <div style={{ width: '100%' }}>
@ -67,10 +123,22 @@ const Settings = observer(() => {
label_item="select language" label_item="select language"
selected_index={['en_US', 'zh_CN'].indexOf(globalStore.Locale)} selected_index={['en_US', 'zh_CN'].indexOf(globalStore.Locale)}
onChange={(id: any, value: any) => { onChange={(id: any, value: any) => {
globalStore.Locale = value.item; globalStore.Locale = value.item
localStorage.setItem('last_selected_locale', value); localStorage.setItem('last_selected_locale', value)
}} }}
></SpMenu> ></SpMenu>
<SpCheckBox
style={{
marginRight: '10px',
}}
onChange={onShouldLogToFileChange}
checked={store.data.should_log_to_file}
>
{
//@ts-ignore
Locale('Log Errors To File')
}
</SpCheckBox>
</div> </div>
) )
}) })