diff --git a/WebViewControl.Avalonia/ConsoleMessageEventArgs.cs b/WebViewControl.Avalonia/ConsoleMessageEventArgs.cs
new file mode 100644
index 00000000..6b5997d1
--- /dev/null
+++ b/WebViewControl.Avalonia/ConsoleMessageEventArgs.cs
@@ -0,0 +1,23 @@
+using System;
+
+
+namespace WebViewControl {
+ public class ConsoleMessageEventArgs : EventArgs {
+ public ConsoleMessageEventArgs(ELogSeverity level, string message, string source, int line) {
+ Level = level;
+ Message = message;
+ Source = source;
+ Line = line;
+ }
+
+ public ELogSeverity Level { get; }
+
+ public string Message { get; }
+
+ public string Source { get; }
+
+ public int Line { get; }
+
+ public bool OutputToConsole { get; set; } = true;
+ }
+}
diff --git a/WebViewControl.Avalonia/ConsoleMessageEventHandler.cs b/WebViewControl.Avalonia/ConsoleMessageEventHandler.cs
new file mode 100644
index 00000000..0d4d24cb
--- /dev/null
+++ b/WebViewControl.Avalonia/ConsoleMessageEventHandler.cs
@@ -0,0 +1,7 @@
+using System;
+
+namespace WebViewControl {
+
+ public delegate void ConsoleMessageEventHandler(object sender, ConsoleMessageEventArgs message);
+
+}
diff --git a/WebViewControl.Avalonia/ELogSeverity.cs b/WebViewControl.Avalonia/ELogSeverity.cs
new file mode 100644
index 00000000..93256191
--- /dev/null
+++ b/WebViewControl.Avalonia/ELogSeverity.cs
@@ -0,0 +1,46 @@
+
+namespace WebViewControl {
+ public enum ELogSeverity {
+
+ ///
+ /// Default logging (currently INFO logging).
+ ///
+ Default,
+
+ ///
+ /// Verbose logging.
+ ///
+ Verbose,
+
+ ///
+ /// DEBUG logging.
+ ///
+ Debug = Verbose,
+
+ ///
+ /// INFO logging.
+ ///
+ Info,
+
+ ///
+ /// WARNING logging.
+ ///
+ Warning,
+
+ ///
+ /// ERROR logging.
+ ///
+ Error,
+
+ ///
+ /// FATAL logging.
+ ///
+ Fatal,
+
+ ///
+ /// Disable logging to file for all messages, and to stderr for messages with
+ /// severity less than FATAL.
+ ///
+ Disable = 99,
+ }
+}
diff --git a/WebViewControl/ConsoleMessageEventArgs.cs b/WebViewControl/ConsoleMessageEventArgs.cs
new file mode 100644
index 00000000..6b5997d1
--- /dev/null
+++ b/WebViewControl/ConsoleMessageEventArgs.cs
@@ -0,0 +1,23 @@
+using System;
+
+
+namespace WebViewControl {
+ public class ConsoleMessageEventArgs : EventArgs {
+ public ConsoleMessageEventArgs(ELogSeverity level, string message, string source, int line) {
+ Level = level;
+ Message = message;
+ Source = source;
+ Line = line;
+ }
+
+ public ELogSeverity Level { get; }
+
+ public string Message { get; }
+
+ public string Source { get; }
+
+ public int Line { get; }
+
+ public bool OutputToConsole { get; set; } = true;
+ }
+}
diff --git a/WebViewControl/ConsoleMessageEventHandler.cs b/WebViewControl/ConsoleMessageEventHandler.cs
new file mode 100644
index 00000000..0d4d24cb
--- /dev/null
+++ b/WebViewControl/ConsoleMessageEventHandler.cs
@@ -0,0 +1,7 @@
+using System;
+
+namespace WebViewControl {
+
+ public delegate void ConsoleMessageEventHandler(object sender, ConsoleMessageEventArgs message);
+
+}
diff --git a/WebViewControl/ELogSeverity.cs b/WebViewControl/ELogSeverity.cs
new file mode 100644
index 00000000..93256191
--- /dev/null
+++ b/WebViewControl/ELogSeverity.cs
@@ -0,0 +1,46 @@
+
+namespace WebViewControl {
+ public enum ELogSeverity {
+
+ ///
+ /// Default logging (currently INFO logging).
+ ///
+ Default,
+
+ ///
+ /// Verbose logging.
+ ///
+ Verbose,
+
+ ///
+ /// DEBUG logging.
+ ///
+ Debug = Verbose,
+
+ ///
+ /// INFO logging.
+ ///
+ Info,
+
+ ///
+ /// WARNING logging.
+ ///
+ Warning,
+
+ ///
+ /// ERROR logging.
+ ///
+ Error,
+
+ ///
+ /// FATAL logging.
+ ///
+ Fatal,
+
+ ///
+ /// Disable logging to file for all messages, and to stderr for messages with
+ /// severity less than FATAL.
+ ///
+ Disable = 99,
+ }
+}
diff --git a/WebViewControl/WebView.cs b/WebViewControl/WebView.cs
index 579de43d..a4221ccd 100644
--- a/WebViewControl/WebView.cs
+++ b/WebViewControl/WebView.cs
@@ -72,6 +72,7 @@ public partial class WebView : IDisposable {
public event Action TitleChanged;
public event UnhandledAsyncExceptionEventHandler UnhandledAsyncException;
public event Action*url*/string> PopupOpening;
+ public event ConsoleMessageEventHandler ConsoleMessageEmitted;
internal event Action Disposed;
internal event JavascriptContextReleasedEventHandler JavascriptContextReleased;
@@ -129,6 +130,7 @@ private void Initialize() {
chromium.JavascriptContextReleased += OnJavascriptContextReleased;
chromium.JavascriptUncaughException += OnJavascriptUncaughException;
chromium.UnhandledException += (o, e) => ForwardUnhandledAsyncException(e.Exception);
+ chromium.ConsoleMessage += (o, e) => ConsoleMessageEmitted.Invoke(o, new ConsoleMessageEventArgs((ELogSeverity)e.Level, e.Message, e.Source, e.Line));
chromium.RequestHandler = new InternalRequestHandler(this);
chromium.LifeSpanHandler = new InternalLifeSpanHandler(this);