Skip to content

Commit 6c30135

Browse files
committed
feat(source): Add relative time since last activity to logging
Makes logs easier to read when looking for stale source/player
1 parent 34ba8d2 commit 6c30135

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/backend/sources/AbstractSource.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
sortByNewestPlayDate,
3434
sortByOldestPlayDate,
3535
} from "../utils.js";
36-
import { comparePlayTemporally, temporalAccuracyIsAtLeast, todayAwareFormat } from "../utils/TimeUtils.js";
36+
import { comparePlayTemporally, temporalAccuracyIsAtLeast, timeToHumanTimestamp, todayAwareFormat } from "../utils/TimeUtils.js";
3737
import { getRoot } from '../ioc.js';
3838
import { componentFileLogger } from '../common/logging.js';
3939
import { WebhookPayload } from '../common/infrastructure/config/health/webhooks.js';
@@ -440,6 +440,8 @@ export default abstract class AbstractSource extends AbstractComponent implement
440440

441441
const activeThreshold = this.lastActivityAt.add(checkActiveFor, 's');
442442
const inactiveFor = dayjs.duration(Math.abs(activeThreshold.diff(dayjs(), 'millisecond'))).humanize(false);
443+
const relativeActivity = dayjs.duration(this.lastActivityAt.diff(dayjs(), 'ms'));
444+
const humanRelativeActivity = relativeActivity.asSeconds() > -3 ? '' : ` (${timeToHumanTimestamp(relativeActivity)} ago)`;
443445
let friendlyInterval = '';
444446
const friendlyLastFormat = todayAwareFormat(this.lastActivityAt);
445447
if (activeThreshold.isBefore(dayjs())) {
@@ -452,12 +454,12 @@ export default abstract class AbstractSource extends AbstractComponent implement
452454
sleepTime = interval + backoff;
453455
}
454456
if(isDebugMode()) {
455-
debugMsgs.push(`Last activity ${friendlyLastFormat} is ${inactiveFor} outside of polling period (last activity + ${checkActiveFor}s)`);
457+
debugMsgs.push(`Last activity ${friendlyLastFormat}${humanRelativeActivity} is ${inactiveFor} outside of polling period (last activity + ${checkActiveFor}s)`);
456458
} else {
457-
debugMsgs.push(`Last activity was at ${friendlyLastFormat}`);
459+
debugMsgs.push(`Last activity was at ${friendlyLastFormat}${humanRelativeActivity}`);
458460
}
459461
} else {
460-
debugMsgs.push(`Last activity was at ${friendlyLastFormat}`);
462+
debugMsgs.push(`Last activity was at ${friendlyLastFormat}${humanRelativeActivity}`);
461463
friendlyInterval = `${formatNumber(sleepTime)}s`;
462464
}
463465
debugMsgs.push(`Next check in ${friendlyInterval}`);

src/backend/utils/TimeUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ export const parseDurationFromTimestamp = (timestamp: any) => {
288288
export type Milliseconds = number;
289289

290290
export const timeToHumanTimestamp = (val: ReturnType<typeof dayjs.duration> | Milliseconds): string => {
291-
const ms = dayjs.isDuration(val) ? val.asMilliseconds() : val;
291+
const ms = dayjs.isDuration(val) ? Math.abs(val.asMilliseconds()) : val;
292292

293293
// less than one hour
294294
if(ms < 3600000) {

0 commit comments

Comments
 (0)