feat: add logging for crashed programs, don't crash the whole process.

This commit is contained in:
redxef 2025-02-26 22:43:57 +01:00
parent b0593585df
commit 54a50ef04b
Signed by: redxef
GPG key ID: 7DAC3AA211CBD921
2 changed files with 22 additions and 10 deletions

View file

@ -72,11 +72,17 @@ namespace Jellyfin.Plugin.SmartPlaylist.ScheduledTasks {
executor.environment.Set("*user*", Lisp.Object.FromBase(user)); executor.environment.Set("*user*", Lisp.Object.FromBase(user));
foreach (var i in items) { foreach (var i in items) {
executor.environment.Set("*item*", Lisp.Object.FromBase(i)); executor.environment.Set("*item*", Lisp.Object.FromBase(i));
var r = executor.eval(expression); try {
_logger.LogTrace("Item {0} evaluated to {1}", i, r.ToString()); var r = executor.eval(expression);
if ((r is not Lisp.Boolean r_bool) || (r_bool.Value())) { _logger.LogTrace("Item {0} evaluated to {1}", i, r.ToString());
_logger.LogDebug("Added '{0}' to Smart Collection {1}", i, name); if ((r is not Lisp.Boolean r_bool) || (r_bool.Value())) {
results.Add(i); _logger.LogDebug("Added '{0}' to Smart Collection {1}", i, name);
results.Add(i);
}
} catch (Exception e) {
_logger.LogError("Program crashed:\n{0}", expression.ToString());
_logger.LogError("Environment:\n{0}", executor.environment);
_logger.LogError("Traceback:\n{0}", e.ToString());
} }
} }
executor = SetupExecutor(); executor = SetupExecutor();

View file

@ -78,11 +78,17 @@ namespace Jellyfin.Plugin.SmartPlaylist.ScheduledTasks {
executor.environment.Set("*user*", Lisp.Object.FromBase(user)); executor.environment.Set("*user*", Lisp.Object.FromBase(user));
foreach (var i in items) { foreach (var i in items) {
executor.environment.Set("*item*", Lisp.Object.FromBase(i)); executor.environment.Set("*item*", Lisp.Object.FromBase(i));
var r = executor.eval(expression); try {
_logger.LogTrace("Item {0} evaluated to {1}", i, r.ToString()); var r = executor.eval(expression);
if ((r is not Lisp.Boolean r_bool) || (r_bool.Value())) { _logger.LogTrace("Item {0} evaluated to {1}", i, r.ToString());
_logger.LogDebug("Added '{0}' to Smart Playlist {1}", i, smartPlaylist.Name); if ((r is not Lisp.Boolean r_bool) || (r_bool.Value())) {
results.Add(i); _logger.LogDebug("Added '{0}' to Smart Playlist {1}", i, smartPlaylist.Name);
results.Add(i);
}
} catch (Exception e) {
_logger.LogError("Program crashed:\n{0}", expression.ToString());
_logger.LogError("Environment:\n{0}", executor.environment);
_logger.LogError("Traceback:\n{0}", e.ToString());
} }
} }
executor = SetupExecutor(); executor = SetupExecutor();