├── dotnet
├── .gitignore
├── Logify.Alert.Xamarin.Android
│ ├── packages.config
│ ├── publish.cmd
│ ├── Properties
│ │ └── AndroidManifest.xml
│ ├── ReportSender
│ │ └── ReportSender.cs
│ ├── NOTICE
│ ├── Collectors
│ │ ├── XamarinDisplayCollector.cs
│ │ ├── XamarinDroidOSCollector.cs
│ │ ├── XamarinAndroidExceptionCollector.cs
│ │ ├── XamarinMemoryCollector.cs
│ │ ├── XamarinExternalStorageCollector.cs
│ │ ├── XamarinDeviceInfoCollector.cs
│ │ └── XamarinApplicationCollector.cs
│ └── Logify.Alert.Xamarin.Android.nuspec
├── DevExpress.Key
│ └── StrongKey.snk
├── Logify.Alert.Serilog
│ ├── publish.cmd
│ ├── packages.config
│ ├── NOTICE
│ ├── Logify.Alert.Serilog.nuspec
│ └── LogifyAlertSink.cs
├── Logify.Alert.Win
│ ├── Configuration
│ │ └── Configuration.cs
│ ├── packages.config
│ ├── publish.cmd
│ ├── TraceListener.cs
│ ├── Collectors
│ │ ├── WinFormsApplicationCollector.cs
│ │ ├── WinFormsCollector.cs
│ │ └── WinFormsEnvironmentCollector.cs
│ ├── NOTICE
│ ├── ReportSender
│ │ └── ReportSender.cs
│ └── Logify.Alert.Win.nuspec
├── Logify.Alert.Wpf
│ ├── Configuration
│ │ └── Configuration.cs
│ ├── packages.config
│ ├── Properties
│ │ ├── Settings.settings
│ │ └── Settings.Designer.cs
│ ├── publish.cmd
│ ├── TraceListener.cs
│ ├── Collectors
│ │ ├── DispatcherCollector.cs
│ │ ├── TaskShedulerCollector.cs
│ │ ├── WPFEnvironmentCollector.cs
│ │ ├── AppDispatcherCollector.cs
│ │ ├── WpfApplicationCollector.cs
│ │ └── WPFCollector.cs
│ ├── Utils
│ │ ├── ConfirmationDialogEventArgs.cs
│ │ └── ConfirmationDialogModel.cs
│ ├── NOTICE
│ ├── ReportSendProgressForm.xaml
│ └── Logify.Alert.Wpf.nuspec
├── Logify.Alert.Console
│ ├── Configuration
│ │ └── Configuration.cs
│ ├── packages.config
│ ├── publish.cmd
│ ├── TraceListener.cs
│ ├── ReportSender
│ │ └── ReportSender.cs
│ ├── Collectors
│ │ ├── ConsoleApplicationCollector.cs
│ │ ├── ConsoleEnvironmentCollector.cs
│ │ └── ConsoleCollector.cs
│ └── NOTICE
├── Logify.Alert.Xamarin.iOS
│ ├── publish.cmd
│ ├── ReportSender
│ │ └── ReportSender.cs
│ ├── NOTICE
│ ├── Collectors
│ │ ├── XamariniOSExceptionCollector.cs
│ │ ├── XamariniOSOSCollector.cs
│ │ ├── XamarinDisplayCollector.cs
│ │ ├── XamarinMemoryCollector.cs
│ │ └── XamarinApplicationCollector.cs
│ └── Logify.Alert.Xamarin.iOS.nuspec
├── Logify.Alert.NLog
│ ├── packages.config
│ ├── publish.cmd
│ ├── LogifyAlertTarget.cs
│ ├── NOTICE
│ └── Logify.Alert.NLog.nuspec
├── Logify.Alert.Inject
│ ├── InjectManagedAssembly
│ │ ├── stdafx.h
│ │ ├── dllmain.cpp
│ │ ├── stdafx.cpp
│ │ ├── targetver.h
│ │ ├── DllExport.cpp
│ │ └── InjectManagedAssembly.vcxproj.filters
│ ├── Logify.Alert.Runner
│ │ ├── App.config
│ │ ├── packages.config
│ │ └── Properties
│ │ │ └── AssemblyInfo.cs
│ └── Logify.Alert.Inject
│ │ ├── packages.config
│ │ └── Properties
│ │ └── AssemblyInfo.cs
├── Logify.Alert.Log4Net
│ ├── packages.config
│ ├── publish.cmd
│ ├── NOTICE
│ ├── LogifyAlertAppender.cs
│ └── Logify.Alert.Log4Net.nuspec
├── Logify.Alert.Core
│ ├── packages.config
│ ├── Collectors
│ │ ├── IInfoCollector.cs
│ │ ├── LogifyProtocolVersionCollectior.cs
│ │ ├── LogifyHardwareIdCollector.cs
│ │ ├── LogifyReportGenerationDateTimeCollector.cs
│ │ ├── DevelopementPlatformCollector.cs
│ │ ├── DebuggerCollector.cs
│ │ ├── TagsCollector.cs
│ │ ├── EnvironmentCollector.cs
│ │ ├── DesktopEnvironmentCollector.cs
│ │ ├── GuiResourcesCollector.cs
│ │ ├── LogifyAppInfoCollector.cs
│ │ ├── CompositeInfoCollector.cs
│ │ ├── AssemblyCollector.cs
│ │ └── DisplayCollector.cs
│ ├── IgnoreCallTrackingAttribute.cs
│ ├── publish.cmd
│ ├── Platform.cs
│ ├── publish_core.cmd
│ ├── Attachment.cs
│ ├── NOTICE
│ ├── Logger
│ │ └── ILogger.cs
│ ├── ExceptionLoggerFactory.cs
│ ├── MethodCallArgumentsStorage.cs
│ ├── BreadcrumbsRecorderBase.cs
│ ├── Tests
│ │ └── Collectors
│ │ │ └── OperatingSystemCollectorTests.cs
│ ├── AssemblyVersion.cs
│ └── Properties
│ │ └── AssemblyInfo.cs
├── Logify.Alert.Web
│ ├── packages.config
│ ├── publish.cmd
│ ├── ReportSender
│ │ └── ReportSender.cs
│ ├── ErrorSectionHandler
│ │ └── ErrorLogSectionHandler.cs
│ ├── TraceListener.cs
│ ├── WebApiExceptionHandler.cs
│ ├── HttpModuleBase.cs
│ ├── LogifyErrorModule.cs
│ ├── NOTICE
│ ├── Collectors
│ │ └── ModulesCollector.cs
│ ├── Logify.Alert.Web.nuspec
│ ├── Configuration
│ │ └── WebLogifyConfigSection.cs
│ └── AspExceptionHandler .cs
├── Logify.Alert.Send
│ ├── App.config
│ └── ReportSender
│ │ └── ReportSender.cs
├── Logify.Alert.UWP
│ ├── publish.cmd
│ ├── ReportSender
│ │ └── ReportSender.cs
│ ├── Collectors
│ │ ├── UWPExceptionCollector.cs
│ │ ├── UWPDisplayCollector.cs
│ │ ├── UWPMemoryCollector.cs
│ │ ├── UWPApplicationCollector.cs
│ │ └── UWPDeviceInfoCollector.cs
│ ├── NOTICE
│ └── Logify.Alert.UWP.nuspec.ok
├── Logify.Alert.NetCore.Console
│ └── ReportSender
│ │ └── ReportSender.cs
└── Logify.Alert.NetCore.Web
│ └── LogifyHttpContext.cs
├── .gitattributes
├── java
├── .gitignore
├── Android
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ └── values
│ │ │ │ │ └── strings.xml
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── devexpress
│ │ │ │ └── logify
│ │ │ │ └── alert
│ │ │ │ └── android
│ │ │ │ └── configuration
│ │ │ │ └── AndroidClientConfigurationLoader.java
│ │ └── androidTest
│ │ │ └── java
│ │ │ └── com
│ │ │ └── devexpress
│ │ │ └── logify
│ │ │ └── alert
│ │ │ └── android
│ │ │ └── collectors
│ │ │ └── AndroidOperatingSystemCollectorTests.java
│ └── proguard-rules.pro
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── settings.gradle
├── Core
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── devexpress
│ │ │ └── logify
│ │ │ └── alert
│ │ │ └── core
│ │ │ ├── Platform.java
│ │ │ ├── events
│ │ │ ├── LogifyEventListener.java
│ │ │ ├── AfterReportExceptionLogifyEvent.java
│ │ │ ├── BeforeReportExceptionLogifyEvent.java
│ │ │ ├── CanReportExceptionEventSource.java
│ │ │ ├── AfterReportExceptionEventSource.java
│ │ │ ├── BeforeReportExceptionEventSource.java
│ │ │ ├── LogifyEvent.java
│ │ │ ├── CanReportExceptionLogifyEvent.java
│ │ │ └── EventSourceBase.java
│ │ │ ├── AttachmentCollection.java
│ │ │ ├── LogifyClientInfo.java
│ │ │ ├── ApplicationProperties.java
│ │ │ ├── collectors
│ │ │ ├── IInfoCollector.java
│ │ │ ├── CurrentCultureCollector.java
│ │ │ ├── LogifyProtocolVersionCollector.java
│ │ │ ├── DevelopmentPlatformCollector.java
│ │ │ ├── TagsCollector.java
│ │ │ ├── CompositeInfoCollector.java
│ │ │ ├── LogifyReportGenerationDateTimeCollector.java
│ │ │ ├── CustomDataCollector.java
│ │ │ ├── ThreadInfoCollector.java
│ │ │ ├── JavaEnvironmentCollector.java
│ │ │ └── CultureBaseCollector.java
│ │ │ ├── configuration
│ │ │ └── ClientConfiguration.java
│ │ │ ├── logger
│ │ │ └── ILogger.java
│ │ │ ├── reportSender
│ │ │ └── IExceptionReportSender.java
│ │ │ ├── ExceptionLoggerFactory.java
│ │ │ └── Attachment.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── devexpress
│ │ └── logify
│ │ └── alert
│ │ └── core
│ │ ├── JsonElementHelper.java
│ │ ├── collectors
│ │ ├── LogifyProtocolVersionCollectorTests.java
│ │ ├── JvmMemoryCollectorTests.java
│ │ ├── TagsCollectorTests.java
│ │ ├── LogifyReportGenerationDateTimeCollectorTests.java
│ │ ├── CustomDataCollectorTests.java
│ │ ├── PlatformCollectorTests.java
│ │ └── JavaEnvironmentCollectorTests.java
│ │ ├── Base64EncoderHelper.java
│ │ └── Base64EncoderTests.java
├── Java
│ └── src
│ │ ├── test
│ │ ├── resources
│ │ │ └── logify.properties
│ │ └── java
│ │ │ └── com
│ │ │ └── devexpress
│ │ │ └── logify
│ │ │ └── alert
│ │ │ └── java
│ │ │ ├── configuration
│ │ │ └── NonSingletonLogifyAlert.java
│ │ │ ├── collectors
│ │ │ ├── JavaOperatingSystemCollectorTests.java
│ │ │ └── JavaDisplayCollectorTests.java
│ │ │ ├── reportSender
│ │ │ ├── ReportCreatingTests.java
│ │ │ └── CanceledReportCreatingTests.java
│ │ │ └── TestLogifyAlert.java
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── devexpress
│ │ └── logify
│ │ └── alert
│ │ └── java
│ │ ├── collectors
│ │ ├── JavaMachineInfoCollector.java
│ │ └── JavaOperatingSystemCollector.java
│ │ └── configuration
│ │ └── JavaClientConfigurationLoader.java
├── README.MD
├── Logback
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── devexpress
│ │ │ └── logify
│ │ │ └── alert
│ │ │ └── logback
│ │ │ └── LogifyAlertAppender.java
│ └── build.gradle
├── Log4j
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── devexpress
│ │ │ └── logify
│ │ │ └── alert
│ │ │ └── log4j
│ │ │ └── LogifyAlertAppender.java
│ └── build.gradle
└── build.gradle
├── .gitmodules
├── js
├── Logify.Alert.NodeJS
│ ├── NOTICE
│ ├── src
│ │ ├── collectors
│ │ │ ├── collectorBase.js
│ │ │ ├── nodeVersionCollector.js
│ │ │ ├── logifyInfoCollector.js
│ │ │ ├── tagsCollector.js
│ │ │ ├── customDataCollector.js
│ │ │ ├── compositeCollector.js
│ │ │ └── platformEnvironmentCollector.js
│ │ └── testApp.js
│ ├── test
│ │ └── collectors
│ │ │ ├── nodeVersionCollectorTest.js
│ │ │ ├── logifyInfoCollectorTest.js
│ │ │ ├── tagsCollectorTest.js
│ │ │ ├── customDataCollectorTest.js
│ │ │ ├── platformEnvironmentCollectorTest.js
│ │ │ └── compositeCollectorTest.js
│ └── package.json
└── Logify.Alert.JS
│ ├── src
│ ├── collectors
│ │ ├── collectorBase.js
│ │ ├── metasCollector.js
│ │ ├── scriptsCollector.js
│ │ ├── logifyInfoCollector.js
│ │ ├── osVersionCollector.js
│ │ ├── tagsCollector.js
│ │ ├── windowSizeCollector.js
│ │ ├── screenSizeCollector.js
│ │ ├── compositeCollector.js
│ │ ├── browserVersionCollector.js
│ │ ├── breadcrumbsCollector.js
│ │ ├── rawHtmlTagCollectorBase.js
│ │ ├── siteDataCollector.js
│ │ └── customDataCollector.js
│ └── breadcrumbs
│ │ ├── breadcrumb.js
│ │ └── autoRecorders
│ │ ├── windowEventsRecorder.js
│ │ ├── mouseEventsRecorder.js
│ │ ├── dragDropEventsRecorder.js
│ │ ├── keyboardEventsRecorder.js
│ │ └── delayedEventRecorderBase.js
│ ├── test
│ └── collectors
│ │ ├── logifyInfoCollectorTest.js
│ │ ├── osVersionCollectorTest.js
│ │ ├── windowSizeCollectorTest.js
│ │ ├── screenSizeCollectorTest.js
│ │ ├── tagsCollectorTest.js
│ │ ├── breadcrumbsCollectorTest.js
│ │ ├── browserVersionCollectorTest.js
│ │ ├── compositeCollectorTest.js
│ │ └── customDataCollectorTest.js
│ └── package.json
├── delphi
└── readme.md
├── .gitignore
└── README.MD
/dotnet/.gitignore:
--------------------------------------------------------------------------------
1 | .vs/
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.cmd text eol=crlf
2 | *.bat text eol=crlf
--------------------------------------------------------------------------------
/java/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle/
2 | .idea/
3 | build/
4 |
5 | *.iml
6 | local.properties
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Xamarin.Android/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/dotnet/DevExpress.Key/StrongKey.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevExpress/Logify.Alert.Clients/HEAD/dotnet/DevExpress.Key/StrongKey.snk
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "php/Logify.Alert.PHP"]
2 | path = php/Logify.Alert.PHP
3 | url = https://github.com/DevExpress/Logify.Alert.PHP
4 |
--------------------------------------------------------------------------------
/java/Android/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Logify.Alert.Android
3 |
4 |
--------------------------------------------------------------------------------
/java/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevExpress/Logify.Alert.Clients/HEAD/java/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/NOTICE:
--------------------------------------------------------------------------------
1 | logify-alert@1.0.1:
2 | - request, Mikeal Rogers, https://github.com/request/request#readme, Apache-2.0
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Serilog/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Serilog.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Win/Configuration/Configuration.cs:
--------------------------------------------------------------------------------
1 | namespace DevExpress.Logify {
2 | public class LogifyConfigSection : LogifyConfigSectionBase {
3 | }
4 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Configuration/Configuration.cs:
--------------------------------------------------------------------------------
1 | namespace DevExpress.Logify {
2 | public class LogifyConfigSection : LogifyConfigSectionBase {
3 | }
4 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/Configuration/Configuration.cs:
--------------------------------------------------------------------------------
1 | namespace DevExpress.Logify {
2 | public class LogifyConfigSection : LogifyConfigSectionBase {
3 | }
4 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Xamarin.iOS/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Xamarin.iOS.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.NLog/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Xamarin.Android/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Xamarin.Android.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release
--------------------------------------------------------------------------------
/java/settings.gradle:
--------------------------------------------------------------------------------
1 | enableFeaturePreview('STABLE_PUBLISHING')
2 |
3 | include ":Core"
4 | include ":Java"
5 | include ":Android"
6 | include ":Log4j"
7 | include ":Logback"
8 |
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/collectors/collectorBase.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | export default class collectorBase {
4 | constructor() { }
5 |
6 | process(report) {}
7 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/InjectManagedAssembly/stdafx.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevExpress/Logify.Alert.Clients/HEAD/dotnet/Logify.Alert.Inject/InjectManagedAssembly/stdafx.h
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Log4Net/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Serilog/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/InjectManagedAssembly/dllmain.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevExpress/Logify.Alert.Clients/HEAD/dotnet/Logify.Alert.Inject/InjectManagedAssembly/dllmain.cpp
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/InjectManagedAssembly/stdafx.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevExpress/Logify.Alert.Clients/HEAD/dotnet/Logify.Alert.Inject/InjectManagedAssembly/stdafx.cpp
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/InjectManagedAssembly/targetver.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DevExpress/Logify.Alert.Clients/HEAD/dotnet/Logify.Alert.Inject/InjectManagedAssembly/targetver.h
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/Platform.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core;
2 |
3 | public enum Platform {
4 | java,
5 | android,
6 | none
7 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Win/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/java/Java/src/test/resources/logify.properties:
--------------------------------------------------------------------------------
1 | logify.serviceUrl=TestUrl
2 | logify.apiKey=1234567890ABCDEFFEDCBA0987654321
3 | logify.appName=TestApplication
4 | logify.appVersion=1.2.3
5 | logify.userId=TestUser
6 |
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/collectorBase.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | export default class collectorBase {
4 | constructor(_owner) {
5 | this.owner = _owner;
6 | }
7 |
8 | process(win, report) {}
9 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/IInfoCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | public interface IInfoCollector {
5 | void Process(Exception ex, ILogger logger);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Send/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/LogifyEventListener.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | public interface LogifyEventListener {
4 | void handle(T event);
5 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/AttachmentCollection.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core;
2 |
3 | import java.util.ArrayList;
4 |
5 | public class AttachmentCollection extends ArrayList {
6 | }
7 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/InjectManagedAssembly/DllExport.cpp:
--------------------------------------------------------------------------------
1 | #include "stdafx.h"
2 |
3 | extern "C" {
4 | __declspec(dllexport) HRESULT InjectManagedAssembly(_In_ LPCWSTR lpCommand) {
5 | return InjectManagedAssemblyCore(lpCommand);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/Logify.Alert.Runner/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.UWP/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | rem nuget pack Logify.Alert.UWP.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release
3 | nuget pack Logify.Alert.UWP.nuspec -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Web.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.Web.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Wpf.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.Wpf.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
--------------------------------------------------------------------------------
/java/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
6 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/Logify.Alert.Runner/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.NLog/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.NLog.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.NLog.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/LogifyClientInfo.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core;
2 |
3 | public final class LogifyClientInfo {
4 | public static final String VERSION = "1.0.1";
5 |
6 | private LogifyClientInfo() { }
7 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Win/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Win.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.Win.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
4 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/ApplicationProperties.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core;
2 |
3 | public class ApplicationProperties {
4 | public String AppName;
5 | public String AppVersion;
6 | public String UserId;
7 | }
8 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Log4Net/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Log4Net.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.Log4Net.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Console.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.Console.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
4 |
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/metasCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import rawHtmlTagCollectorBase from "./rawHtmlTagCollectorBase";
3 |
4 | export default class metasCollector extends rawHtmlTagCollectorBase {
5 | constructor(_owner) {
6 | super(_owner, "meta");
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/java/Java/src/test/java/com/devexpress/logify/alert/java/configuration/NonSingletonLogifyAlert.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.java.configuration;
2 |
3 | import com.devexpress.logify.alert.java.TestLogifyAlert;
4 |
5 | public class NonSingletonLogifyAlert extends TestLogifyAlert {
6 | }
7 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/IgnoreCallTrackingAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Constructor)]
5 | public class IgnoreCallTrackingAttribute : Attribute {
6 | }
7 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/scriptsCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import rawHtmlTagCollectorBase from "./rawHtmlTagCollectorBase";
3 |
4 | export default class scriptsCollector extends rawHtmlTagCollectorBase {
5 | constructor(_owner) {
6 | super(_owner, "script");
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Xamarin.iOS/ReportSender/ReportSender.cs:
--------------------------------------------------------------------------------
1 | namespace DevExpress.Logify.Core.Internal
2 | {
3 | class XamarinExceptionReportSender : ServiceExceptionReportSender {
4 | public override IExceptionReportSender CreateEmptyClone() {
5 | return new XamarinExceptionReportSender();
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.UWP/ReportSender/ReportSender.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | class UWPExceptionReportSender : ServiceExceptionReportSender {
5 | public override IExceptionReportSender CreateEmptyClone() {
6 | return new UWPExceptionReportSender();
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/ReportSender/ReportSender.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | class WebExceptionReportSender : ServiceExceptionReportSender {
5 | public override IExceptionReportSender CreateEmptyClone() {
6 | return new WebExceptionReportSender();
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/collectors/IInfoCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import com.devexpress.logify.alert.core.logger.ILogger;
4 |
5 | import java.io.IOException;
6 |
7 | public interface IInfoCollector {
8 | void process(Throwable ex, ILogger logger) throws IOException;
9 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Inject/Logify.Alert.Inject/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Xamarin.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Xamarin.Android/ReportSender/ReportSender.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | class XamarinExceptionReportSender : ServiceExceptionReportSender {
5 | public override IExceptionReportSender CreateEmptyClone() {
6 | return new XamarinExceptionReportSender();
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/publish.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | nuget pack Logify.Alert.Core.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | nuget pack Logify.Alert.Core.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
4 | rem nuget pack Logify.Alert.Core.NetCore.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.NetCore.Console/ReportSender/ReportSender.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | class NetCoreConsoleExceptionReportSender : ServiceExceptionReportSender {
5 | public override IExceptionReportSender CreateEmptyClone() {
6 | return new NetCoreConsoleExceptionReportSender();
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/collectors/nodeVersionCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 | var process = require('process');
4 |
5 | export default class nodeVersionCollector extends collectorBase {
6 | process(report) {
7 | super.process(report);
8 |
9 | report.nodeEnvironmentVersions = process.versions;
10 | }
11 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/LogifyProtocolVersionCollectior.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | public class LogifyProtocolVersionCollector : IInfoCollector {
5 | public virtual void Process(Exception ex, ILogger logger) {
6 | logger.WriteValue("logifyProtocolVersion", AssemblyInfo.Version);
7 | }
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.NetCore.Web/LogifyHttpContext.cs:
--------------------------------------------------------------------------------
1 | //using Microsoft.AspNetCore.Http;
2 | //using System;
3 |
4 | //namespace DevExpress.Logify.Core.Internal {
5 | // internal static class LogifyHttpContext {
6 | // [ThreadStatic]
7 | // static HttpContext current;
8 |
9 | // internal static HttpContext Current { get { return current; } set { current = value; } }
10 | // }
11 | //}
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/ErrorSectionHandler/ErrorLogSectionHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DevExpress.Logify.Web.ErrorSectionHandler {
7 | #region Imports
8 |
9 | using System.Configuration;
10 |
11 | #endregion
12 |
13 | internal sealed class ErrorLogSectionHandler : SingleTagSectionHandler { }
14 | }
15 |
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/collectors/logifyInfoCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class logifyInfoCollector extends collectorBase {
5 | process(report) {
6 | super.process(report);
7 |
8 | report.clientVersion = "15.2.11";
9 | report.devPlatform = "node.js";
10 | report.logifyProtocolVersion = "1.0";
11 | }
12 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/TraceListener.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 | using DevExpress.Logify.Core.Internal;
3 |
4 | namespace DevExpress.Logify.Web {
5 | public class LogifyAlertTraceListener : LogifyAlertTraceListenerBase {
6 | protected override void InitializeInstance() {
7 | if (LogifyClientBase.Instance == null)
8 | LogifyAlert.InitializeInstance();
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Win/TraceListener.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 | using DevExpress.Logify.Core.Internal;
3 |
4 | namespace DevExpress.Logify.Win {
5 | public class LogifyAlertTraceListener : LogifyAlertTraceListenerBase {
6 | protected override void InitializeInstance() {
7 | if (LogifyClientBase.Instance == null)
8 | LogifyAlert.InitializeInstance();
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/AfterReportExceptionLogifyEvent.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | import com.devexpress.logify.alert.core.LogifyClientBase;
4 |
5 | public class AfterReportExceptionLogifyEvent extends LogifyEvent {
6 | public AfterReportExceptionLogifyEvent(LogifyClientBase source, Throwable exception) {
7 | super(source, exception);
8 | }
9 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/BeforeReportExceptionLogifyEvent.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | import com.devexpress.logify.alert.core.LogifyClientBase;
4 |
5 | public class BeforeReportExceptionLogifyEvent extends LogifyEvent {
6 | public BeforeReportExceptionLogifyEvent(LogifyClientBase source, Throwable exception) {
7 | super(source, exception);
8 | }
9 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/collectors/CurrentCultureCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import java.util.Locale;
4 |
5 | public class CurrentCultureCollector extends CultureBaseCollector {
6 | public CurrentCultureCollector() {
7 | super("currentCulture");
8 | }
9 |
10 | public Locale getLocale() {
11 | return locale;
12 | }
13 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/TraceListener.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 | using DevExpress.Logify.Core.Internal;
3 |
4 | namespace DevExpress.Logify.Console {
5 | public class LogifyAlertTraceListener : LogifyAlertTraceListenerBase {
6 | protected override void InitializeInstance() {
7 | if (LogifyClientBase.Instance == null)
8 | LogifyAlert.InitializeInstance();
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Platform.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DevExpress.Logify.Core.Internal {
7 | public enum Platform {
8 | WIN,
9 | WPF,
10 | ASP,
11 | NETCORE_ASP,
12 | NETCORE_CONSOLE,
13 | XAMARIN_ANDROID,
14 | XAMARIN_IOS,
15 | UWP,
16 | NONE
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/java/Android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/collectors/tagsCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class tagsCollector extends collectorBase {
5 | constructor(_tags) {
6 | super();
7 | this.tags = _tags;
8 | }
9 | process(report) {
10 | super.process(report);
11 |
12 | if(this.tags != undefined)
13 | report.tags = this.tags;
14 | }
15 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/TraceListener.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using DevExpress.Logify.Core;
3 | using DevExpress.Logify.Core.Internal;
4 |
5 | namespace DevExpress.Logify.WPF {
6 | public class LogifyAlertTraceListener : LogifyAlertTraceListenerBase {
7 | protected override void InitializeInstance() {
8 | if (LogifyClientBase.Instance == null)
9 | LogifyAlert.InitializeInstance();
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/java/README.MD:
--------------------------------------------------------------------------------
1 | # Logify Alert Java Clients
2 |
3 | ## Platforms
4 |
5 | * [Java](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/java/Java)
6 | * [Android](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/java/Android)
7 |
8 | ## Integrations
9 | * [log4j](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/java/Log4j)
10 | * [Logback](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/java/Logback)
--------------------------------------------------------------------------------
/delphi/readme.md:
--------------------------------------------------------------------------------
1 | # Logify Alert Delphi Clients
2 | Currently, Logify Alert does not provide users with a standalone client. However, you can use additional libraries to integrate Logify Alert into the crash reporting process. To do this, follow the required link below.
3 |
4 | * [madExcept](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/delphi/madExcept)
5 | * [EurekaLog](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/delphi/eurekaLog)
6 |
--------------------------------------------------------------------------------
/java/Core/src/test/java/com/devexpress/logify/alert/core/JsonElementHelper.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core;
2 |
3 | import com.google.gson.JsonElement;
4 |
5 | public class JsonElementHelper {
6 | public static String getValueAsStringOrNull(JsonElement jsonElement) {
7 | if (jsonElement != null && !jsonElement.isJsonNull())
8 | return jsonElement.getAsString();
9 | else
10 | return null;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/ReportSender/ReportSender.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using System.Windows.Forms;
4 | using DevExpress.Logify.Core;
5 |
6 | namespace DevExpress.Logify.Core.Internal {
7 | public class ConsoleExceptionReportSender : ServiceExceptionReportSender {
8 | public override IExceptionReportSender CreateEmptyClone() {
9 | return new ConsoleExceptionReportSender();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/configuration/ClientConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.configuration;
2 |
3 | import java.util.Map;
4 |
5 | public class ClientConfiguration {
6 | public String ApiKey;
7 | public String AppName;
8 | public String AppVersion;
9 | public String UserId;
10 | public String ServiceUrl;
11 | public Map CustomData;
12 | public Map Tags;
13 | }
14 |
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/breadcrumbs/breadcrumb.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | export default class breadcrumb {
4 | constructor(message, eventType) {
5 | this.dateTime = new Date().toISOString();
6 | this.message = message;
7 | this.event = eventType;
8 | }
9 | }
10 |
11 | export class autoRecordedBreadcrumb extends breadcrumb {
12 | constructor(message, eventType) {
13 | super(message, eventType);
14 | this.a = "1";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/collectors/customDataCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class customDataCollector extends collectorBase {
5 | constructor(_customData) {
6 | super();
7 | this.customData = _customData;
8 | }
9 | process(report) {
10 | super.process(report);
11 |
12 | if(this.customData != undefined)
13 | report.customData = this.customData;
14 | }
15 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/logifyInfoCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class logifyInfoCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 | }
8 |
9 | process(win, report) {
10 | super.process(win, report);
11 |
12 | report.clientVersion = "1.0.2";
13 | report.devPlatform = "js";
14 | report.logifyProtocolVersion = "1.0";
15 | }
16 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/LogifyHardwareIdCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 |
4 | namespace DevExpress.Logify.Core.Internal {
5 | public class LogifyHardwareIdCollector : IInfoCollector {
6 | public virtual void Process(Exception ex, ILogger logger) {
7 | string hardwareId = HardwareId.Get();
8 | if (!String.IsNullOrEmpty(hardwareId))
9 | logger.WriteValue("logifyHardwareId", hardwareId);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/collectors/LogifyProtocolVersionCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import com.devexpress.logify.alert.core.logger.ILogger;
4 | import com.devexpress.logify.alert.core.LogifyClientInfo;
5 |
6 | public class LogifyProtocolVersionCollector implements IInfoCollector {
7 | public void process(Throwable ex, ILogger logger) {
8 | logger.writeValue("logifyProtocolVersion", LogifyClientInfo.VERSION);
9 | }
10 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/CanReportExceptionEventSource.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | public class CanReportExceptionEventSource extends EventSourceBase {
4 | private static CanReportExceptionEventSource source;
5 |
6 | public static CanReportExceptionEventSource getSource() {
7 | if (source != null)
8 | return source;
9 |
10 | source = new CanReportExceptionEventSource();
11 | return source;
12 | }
13 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Collectors/DispatcherCollector.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace DevExpress.Logify.Core.Internal {
8 | class DispatcherCollector : WpfApplicationCollector
9 | {
10 | public override void Process(Exception ex, ILogger logger)
11 | {
12 | logger.WriteValue("Exception Type", "DispatcherUnhandledException");
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Collectors/TaskShedulerCollector.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace DevExpress.Logify.Core.Internal {
8 | class TaskShedulerCollector : WpfApplicationCollector
9 | {
10 | public override void Process(Exception ex, ILogger logger)
11 | {
12 | logger.WriteValue("Exception Type", "UnobservedTaskException");
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/AfterReportExceptionEventSource.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | public class AfterReportExceptionEventSource extends EventSourceBase {
4 | private static AfterReportExceptionEventSource source;
5 |
6 | public static AfterReportExceptionEventSource getSource() {
7 | if (source != null)
8 | return source;
9 |
10 | source = new AfterReportExceptionEventSource();
11 | return source;
12 | }
13 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Collectors/WPFEnvironmentCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using DevExpress.Logify.Core;
3 |
4 | namespace DevExpress.Logify.Core.Internal {
5 | public class WPFEnvironmentCollector : DesktopEnvironmentCollector
6 | {
7 | public WPFEnvironmentCollector(LogifyCollectorContext context)
8 | : base(context) {
9 | }
10 | //protected override void RegisterCollectors() {
11 | // base.RegisterCollectors();
12 | // //etc
13 | //}
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/BeforeReportExceptionEventSource.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | public class BeforeReportExceptionEventSource extends EventSourceBase {
4 | private static BeforeReportExceptionEventSource source;
5 |
6 | public static BeforeReportExceptionEventSource getSource() {
7 | if (source != null)
8 | return source;
9 |
10 | source = new BeforeReportExceptionEventSource();
11 | return source;
12 | }
13 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/osVersionCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class osVersionCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 | }
8 |
9 | process(win, report) {
10 | super.process(win, report);
11 |
12 | if(report.os === undefined)
13 | report.os = new Object();
14 |
15 | report.os.platform = win.navigator.platform;
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/tagsCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class tagsCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 | }
8 |
9 | process(win, report) {
10 | super.process(win, report);
11 |
12 | if((this.owner == null) || (this.owner == undefined))
13 | return;
14 |
15 | if(this.owner.tags != undefined)
16 | report.tags = this.owner.tags;
17 | }
18 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/publish_core.cmd:
--------------------------------------------------------------------------------
1 | @echo off
2 | rem nuget pack Logify.Alert.Core.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release40
3 | rem nuget pack Logify.Alert.Core.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release45
4 | rem nuget pack Logify.Alert.Core.NetCore.csproj -Verbosity detailed -Prop Platform=AnyCPU -Prop Configuration=Release
5 | dotnet restore Logify.Alert.NetCore.Core.csproj
6 | dotnet build Logify.Alert.NetCore.Core.csproj
7 | dotnet pack Logify.Alert.NetCore.Core.csproj
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Collectors/AppDispatcherCollector.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace DevExpress.Logify.Core.Internal {
8 | class AppDispatcherCollector : WpfApplicationCollector
9 | {
10 | public override void Process(Exception ex, ILogger logger)
11 | {
12 | logger.WriteValue("Exception Type", "ApplicationDispatcherUnhandledException");
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/WebApiExceptionHandler.cs:
--------------------------------------------------------------------------------
1 | using DevExpress.Logify.Core.Internal;
2 | using System.Web.Http.Filters;
3 |
4 | namespace DevExpress.Logify.Web {
5 | public class WebApiExceptionHandler : ExceptionFilterAttribute {
6 | public WebApiExceptionHandler() {
7 | }
8 |
9 | [IgnoreCallTracking]
10 | public override void OnException(HttpActionExecutedContext context) {
11 | LogifyAlert.Instance.Send(context.Exception);
12 | base.OnException(context);
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/windowSizeCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class windowSizeCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 | }
8 |
9 | process(win, report) {
10 | super.process(win, report);
11 |
12 | if(report.window === undefined)
13 | report.window = new Object();
14 |
15 | report.window.width = win.innerWidth;
16 | report.window.height = win.innerHeight;
17 | }
18 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/collectors/compositeCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class compositeCollector extends collectorBase {
5 | constructor() {
6 | super();
7 |
8 | this.collectors = [];
9 | }
10 |
11 | process(report) {
12 | super.process(report);
13 |
14 | let collectorsCount = this.collectors.length;
15 | for(let i = 0; i < collectorsCount; i++) {
16 | this.collectors[i].process(report);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/LogifyEvent.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | import com.devexpress.logify.alert.core.LogifyClientBase;
4 | import java.util.EventObject;
5 |
6 | public class LogifyEvent extends EventObject {
7 | public LogifyEvent(LogifyClientBase source, Throwable exception){
8 | super(source);
9 | this.exception = exception;
10 | }
11 |
12 | Throwable exception;
13 | public Throwable getException(){
14 | return this.exception;
15 | }
16 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/screenSizeCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class screenSizeCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 | }
8 |
9 | process(win, report) {
10 | super.process(win, report);
11 |
12 | if(report.screen === undefined)
13 | report.screen = new Object();
14 |
15 | report.screen.width = win.screen.width;
16 | report.screen.height = win.screen.height;
17 | }
18 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/LogifyReportGenerationDateTimeCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 |
4 | namespace DevExpress.Logify.Core.Internal {
5 | public class LogifyReportGenerationDateTimeCollector : IInfoCollector {
6 | public virtual void Process(Exception ex, ILogger logger) {
7 | DateTime utcNow = DateTime.UtcNow;
8 | string dateTimeString = utcNow.ToString("o", CultureInfo.InvariantCulture);
9 | logger.WriteValue("logifyReportDateTimeUtc", dateTimeString);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/test/collectors/nodeVersionCollectorTest.js:
--------------------------------------------------------------------------------
1 | import nodeVersionCollector from "../../src/collectors/nodeVersionCollector.js";
2 | var assert = require('chai').assert;
3 | var process = require('process');
4 |
5 | describe('processVersionCollector tests', function() {
6 |
7 | it('process test', function () {
8 | let reportData = new Object();
9 |
10 | let collector = new nodeVersionCollector();
11 | collector.process(reportData);
12 | assert.equal(process.versions, reportData.nodeEnvironmentVersions);
13 | });
14 | });
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/breadcrumbs/autoRecorders/windowEventsRecorder.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | import eventRecorderBase from './eventRecorderBase.js'
4 |
5 | export default class windowEventsRecorder extends eventRecorderBase {
6 | constructor() {
7 | super();
8 | this._events = [
9 | "resize"
10 | ];
11 | this.category = "window";
12 | }
13 | parseEventData(event, breadcrumb) {
14 | breadcrumb.customData["newWidth"] = event.target.innerWidth;
15 | breadcrumb.customData["newHeight"] = event.target.innerHeight;
16 | }
17 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/HttpModuleBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Web;
3 |
4 | namespace DevExpress.Logify.Web {
5 | public class HttpModuleBase : IHttpModule {
6 | void IHttpModule.Init(HttpApplication context) {
7 | if (context == null)
8 | return;
9 | this.OnInit(context);
10 | }
11 | void IHttpModule.Dispose() {
12 | this.OnDispose();
13 | }
14 | public virtual void OnDispose() {
15 | }
16 |
17 | public virtual void OnInit(HttpApplication context) {
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/Collectors/ConsoleApplicationCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 | using DevExpress.Logify.Core;
4 |
5 | namespace DevExpress.Logify.Core.Internal {
6 | public class ConsoleApplicationCollector : ApplicationCollector {
7 | public override string AppName { get { return Application.ProductName; } }
8 | public override string AppVersion { get { return Application.ProductVersion; } }
9 | public override string UserId { get { return String.Empty; } }
10 |
11 | public ConsoleApplicationCollector(): base() {}
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Win/Collectors/WinFormsApplicationCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 | using DevExpress.Logify.Core;
4 |
5 | namespace DevExpress.Logify.Core.Internal {
6 | public class WinFormsApplicationCollector : ApplicationCollector {
7 | public override string AppName { get { return Application.ProductName; } }
8 | public override string AppVersion { get { return Application.ProductVersion; } }
9 | public override string UserId { get { return String.Empty; } }
10 |
11 | public WinFormsApplicationCollector(): base() {}
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/compositeCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class compositeCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 |
8 | this.collectors = [];
9 | }
10 |
11 | process(win, report, customData) {
12 | super.process(win, report);
13 |
14 | let collectorsCount = this.collectors.length;
15 | for(let i = 0; i < collectorsCount; i++) {
16 | this.collectors[i].process(win, report, customData);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/DevelopementPlatformCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace DevExpress.Logify.Core.Internal {
4 | public class DevelopementPlatformCollector : IInfoCollector {
5 |
6 | readonly Platform platform;
7 |
8 | public DevelopementPlatformCollector(Platform platform) {
9 | this.platform = platform;
10 | }
11 |
12 | public virtual void Process(Exception ex, ILogger logger) {
13 | logger.WriteValue("devPlatform", "dotnet");
14 | logger.WriteValue("platform", this.platform.ToString());
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/java/Java/src/main/java/com/devexpress/logify/alert/java/collectors/JavaMachineInfoCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.java.collectors;
2 |
3 | import com.devexpress.logify.alert.core.collectors.IInfoCollector;
4 | import com.devexpress.logify.alert.core.logger.ILogger;
5 |
6 | import java.io.IOException;
7 | import java.net.InetAddress;
8 |
9 | public class JavaMachineInfoCollector implements IInfoCollector {
10 |
11 | public void process(Throwable ex, ILogger logger) throws IOException {
12 | logger.writeValue("domainName", InetAddress.getLocalHost().getCanonicalHostName());
13 |
14 | }
15 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Attachment.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace DevExpress.Logify.Core {
4 | public class Attachment {
5 | public string Name { get; set; }
6 | public string MimeType { get; set; }
7 | public byte[] Content { get; set; }
8 | }
9 |
10 | public class AttachmentCollection : List {
11 | public AttachmentCollection() {
12 | }
13 | AttachmentCollection(IEnumerable items) : base(items) {
14 | }
15 | internal AttachmentCollection Clone() {
16 | return new AttachmentCollection(this);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/test/collectors/logifyInfoCollectorTest.js:
--------------------------------------------------------------------------------
1 | import logifyInfoCollector from "../../src/collectors/logifyInfoCollector.js";
2 | var assert = require('chai').assert;
3 |
4 | describe('logifyInfoCollector tests', function() {
5 |
6 | it('process test', function () {
7 | let collector = new logifyInfoCollector();
8 |
9 | let reportData = new Object();
10 |
11 | collector.process(null, reportData);
12 |
13 | assert.equal("1.0.2", reportData.clientVersion);
14 | assert.equal("js", reportData.devPlatform);
15 | assert.equal("1.0", reportData.logifyProtocolVersion);
16 | });
17 | });
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/test/collectors/logifyInfoCollectorTest.js:
--------------------------------------------------------------------------------
1 | import logifyInfoCollector from "../../src/collectors/logifyInfoCollector.js";
2 | var assert = require('chai').assert;
3 |
4 | describe('logifyInfoCollector tests', function() {
5 |
6 | it('process test', function () {
7 | let collector = new logifyInfoCollector();
8 |
9 | let reportData = new Object();
10 |
11 | collector.process(reportData);
12 |
13 | assert.equal("15.2.11", reportData.clientVersion);
14 | assert.equal("node.js", reportData.devPlatform);
15 | assert.equal("1.0", reportData.logifyProtocolVersion);
16 | });
17 | });
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/test/collectors/osVersionCollectorTest.js:
--------------------------------------------------------------------------------
1 | import osVersionCollector from "../../src/collectors/osVersionCollector.js";
2 | var assert = require('chai').assert;
3 |
4 | describe('osVersionCollector tests', function() {
5 |
6 | it('process test', function () {
7 | let collector = new osVersionCollector();
8 | let win = new Object();
9 | win.navigator = new Object();
10 | win.navigator.platform = "mocPlatform";
11 |
12 | let reportData = new Object();
13 |
14 | collector.process(win, reportData);
15 |
16 | assert.equal("mocPlatform", reportData.os.platform);
17 | });
18 | });
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/NOTICE:
--------------------------------------------------------------------------------
1 | Logify.Alert.Core v1.0.55.0
2 | Microsoft.Extensions.Configuration.Binder | Microsoft https://raw.githubusercontent.com/aspnet/Home/2.0.0/LICENSE.txt
3 | Microsoft.Extensions.DependencyModel | Microsoft.Extensions.DependencyModel https://github.com/dotnet/core-setup/blob/master/LICENSE.TXT
4 | Microsoft.Extensions.Logging | Microsoft https://raw.githubusercontent.com/aspnet/Home/2.0.0/LICENSE.txt
5 | System.ComponentModel | Microsoft http://go.microsoft.com/fwlink/?LinkId=329770
6 | System.Diagnostics.StackTrace | Microsoft http://go.microsoft.com/fwlink/?LinkId=329770
7 | System.Threading.Thread | Microsoft http://go.microsoft.com/fwlink/?LinkId=329770
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/events/CanReportExceptionLogifyEvent.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.events;
2 |
3 | import com.devexpress.logify.alert.core.LogifyClientBase;
4 |
5 | public class CanReportExceptionLogifyEvent extends LogifyEvent {
6 | private boolean cancel;
7 |
8 | public CanReportExceptionLogifyEvent(LogifyClientBase source, Throwable exception) {
9 | super(source, exception);
10 | cancel = false;
11 | }
12 |
13 | public boolean getCancel() {
14 | return cancel;
15 | }
16 |
17 | public void setCancel(boolean cancel) {
18 | this.cancel = cancel;
19 | }
20 | }
--------------------------------------------------------------------------------
/java/Core/src/test/java/com/devexpress/logify/alert/core/collectors/LogifyProtocolVersionCollectorTests.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import com.devexpress.logify.alert.core.LogifyClientInfo;
4 | import org.junit.Test;
5 |
6 | import static org.junit.Assert.assertEquals;
7 |
8 | public class LogifyProtocolVersionCollectorTests extends CollectorTestsBase {
9 |
10 | @Test
11 | public void testLogifyProtocolVersionCollecting() {
12 | new LogifyProtocolVersionCollector().process(null, logger);
13 | assertEquals(LogifyClientInfo.VERSION, parseJsonReport(true).get("logifyProtocolVersion").getAsString());
14 | }
15 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Utils/ConfirmationDialogEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DevExpress.Logify.WPF {
7 | public class ConfirmationDialogEventArgs : EventArgs {
8 | public ConfirmationDialogModel Model { get; private set; }
9 | public bool Handled { get; set; }
10 |
11 | public ConfirmationDialogEventArgs(ConfirmationDialogModel model) {
12 | this.Model = model;
13 | Handled = false;
14 | }
15 | }
16 |
17 | public delegate void ConfirmationDialogEventHandler(object sender, ConfirmationDialogEventArgs e);
18 | }
19 |
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/logger/ILogger.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.logger;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 |
6 | public interface ILogger {
7 | StringBuilder getBuilder();
8 | Map getData();
9 |
10 | void beginWriteObject(String name);
11 | void writeValue(String name, String text);
12 | void writeValue(String name, boolean value);
13 | void writeValue(String name, int value);
14 | void writeValue(String name, List arrayList);
15 | void endWriteObject(String name);
16 |
17 | void beginWriteArray(String name);
18 | void endWriteArray(String name);
19 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Console/Collectors/ConsoleEnvironmentCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using DevExpress.Logify.Core;
3 |
4 | namespace DevExpress.Logify.Core.Internal {
5 | public class ConsoleEnvironmentCollector : DesktopEnvironmentCollector {
6 | public ConsoleEnvironmentCollector(LogifyCollectorContext context)
7 | : base(context) {
8 | }
9 | protected override void RegisterCollectors(LogifyCollectorContext context) {
10 | base.RegisterCollectors(context);
11 | }
12 | //protected override void RegisterCollectors() {
13 | // base.RegisterCollectors();
14 | // //etc
15 | //}
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.NLog/LogifyAlertTarget.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using DevExpress.Logify.Core;
3 | using NLog.Targets;
4 | using NLog;
5 |
6 | namespace DevExpress.Logify.Alert.NLog {
7 | [Target("LogifyAlert")]
8 | public sealed class LogifyAlertTarget : TargetWithLayout {
9 | protected override void Write(LogEventInfo logEvent) {
10 | try {
11 | if (logEvent != null && logEvent.Exception != null) {
12 | if (LogifyClientBase.Instance != null)
13 | LogifyClientBase.Instance.Send(logEvent.Exception);
14 | }
15 | }
16 | catch {
17 | }
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Logger/ILogger.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 |
5 | namespace DevExpress.Logify.Core.Internal {
6 | public interface ILogger {
7 | TextWriter Writer { get; }
8 | Dictionary Data { get; }
9 | void BeginWriteObject(string name);
10 | void EndWriteObject(string name);
11 | void BeginWriteArray(string name);
12 | void EndWriteArray(string name);
13 | void WriteValue(string name, string text);
14 | void WriteValue(string name, bool value);
15 | void WriteValue(string name, int value);
16 | void WriteValue(string name, Array array);
17 | }
18 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/collectors/DevelopmentPlatformCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import com.devexpress.logify.alert.core.logger.ILogger;
4 | import com.devexpress.logify.alert.core.Platform;
5 |
6 | public class DevelopmentPlatformCollector implements IInfoCollector {
7 | private Platform platform = Platform.none;
8 |
9 | public DevelopmentPlatformCollector(Platform platform) {
10 | this.platform = platform;
11 | }
12 |
13 | public void process(Throwable ex, ILogger logger) {
14 | logger.writeValue("devPlatform", "java");
15 | logger.writeValue("platform", platform.toString());
16 | }
17 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/test/collectors/windowSizeCollectorTest.js:
--------------------------------------------------------------------------------
1 | import windowSizeCollector from "../../src/collectors/windowSizeCollector.js";
2 | var assert = require('chai').assert;
3 |
4 | describe('windowSizeCollector tests', function() {
5 |
6 | it('process test', function () {
7 | let collector = new windowSizeCollector();
8 | let win = new Object();
9 | win.innerHeight = "mocHeight";
10 | win.innerWidth = "mocWidth";
11 |
12 | let reportData = new Object();
13 |
14 | collector.process(win, reportData);
15 |
16 | assert.equal("mocHeight", reportData.window.height);
17 | assert.equal("mocWidth", reportData.window.width);
18 | });
19 | });
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/DebuggerCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 |
4 | namespace DevExpress.Logify.Core.Internal {
5 | public class DebuggerCollector : IInfoCollector {
6 | public virtual void Process(Exception ex, ILogger logger) {
7 | try {
8 | logger.BeginWriteObject("debugger");
9 | try {
10 | logger.WriteValue("isAttached", Debugger.IsAttached);
11 | //etc
12 | }
13 | finally {
14 | logger.EndWriteObject("debugger");
15 | }
16 | }
17 | catch {
18 | }
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.userprefs
2 | bin/
3 | obj/
4 | csx/
5 | packages/
6 | nuget-packages/
7 | *.pdb
8 | *.cache
9 | *.suo
10 | *.mdf
11 | *.ldf
12 | *.orig
13 | .vs/config/applicationhost.config
14 | *.cd
15 | *.iml
16 | *.user
17 | *.nupkg
18 | *.log
19 | **/**/.idea
20 | **/**/out/
21 | **/**/build/
22 | **/**/.gradle/
23 | node_modules
24 | Logify.JS/lib
25 | Logify.NodeJS/lib/
26 | Logify.NodeJS/bundle/
27 | .cr/
28 | js/Logify.Alert.NodeJS/bundle/
29 | js/Logify.Alert.JS/lib/
30 | js/Logify.Alert.NodeJS/lib/
31 | dotnet/Logify.Alert.Inject/InjectManagedAssembly/x64/
32 | dotnet/Logify.Alert.Inject/InjectManagedAssembly/Debug/
33 | dotnet/Logify.Alert.Inject/InjectManagedAssembly/Release/
34 | dotnet/Logify.Alert.Inject/Logify.Alert.Inject.sdf
35 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Web/LogifyErrorModule.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using DevExpress.Logify.Core;
3 | using System.Web.Configuration;
4 | using System.ComponentModel;
5 | using DevExpress.Logify.Core.Internal;
6 |
7 | namespace DevExpress.Logify.Web {
8 | [Browsable(false)]
9 | [EditorBrowsable(EditorBrowsableState.Never)]
10 | [Obsolete("Use the LogifyAlert.Instance.Send instead.")]
11 | public static class Register {
12 | [EditorBrowsable(EditorBrowsableState.Never)]
13 | [Browsable(false)]
14 | [Obsolete("Use the LogifyAlert.Instance.Send instead.")]
15 | [IgnoreCallTracking]
16 | public static void Exception(Exception e) {
17 | LogifyAlert.Instance.Send(e);
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/test/collectors/screenSizeCollectorTest.js:
--------------------------------------------------------------------------------
1 | import screenSizeCollector from "../../src/collectors/screenSizeCollector.js";
2 | var assert = require('chai').assert;
3 |
4 | describe('screenSizeCollector tests', function() {
5 |
6 | it('process test', function () {
7 | let collector = new screenSizeCollector();
8 | let win = new Object();
9 | win.screen = new Object();
10 | win.screen.width = "mocWidth";
11 | win.screen.height = "mocHeight";
12 |
13 | let reportData = new Object();
14 |
15 | collector.process(win, reportData);
16 |
17 | assert.equal("mocWidth", reportData.screen.width);
18 | assert.equal("mocHeight", reportData.screen.height);
19 | });
20 | });
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/reportSender/IExceptionReportSender.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.reportSender;
2 |
3 | import com.devexpress.logify.alert.core.LogifyClientExceptionReport;
4 |
5 | public interface IExceptionReportSender {
6 | String getServiceUrl();
7 | void setServiceUrl(String serviceUrl);
8 | String getApiKey();
9 | void setApiKey(String apiKey);
10 |
11 | boolean getConfirmSendReport();
12 | void setConfirmSendReport(boolean confirmSendReport);;
13 |
14 | boolean canSendExceptionReport();
15 | boolean sendExceptionReport(LogifyClientExceptionReport report);
16 |
17 | IExceptionReportSender clone();
18 | void copyFrom(IExceptionReportSender instance);
19 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/Collectors/TagsCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace DevExpress.Logify.Core.Internal {
5 | public class TagsCollector : IInfoCollector {
6 | readonly IDictionary tags;
7 |
8 | public TagsCollector(IDictionary tags) {
9 | this.tags = tags;
10 | }
11 |
12 | public void Process(Exception ex, ILogger logger) {
13 | if (tags == null || tags.Count <= 0)
14 | return;
15 |
16 | logger.BeginWriteObject("tags");
17 | foreach (string key in tags.Keys)
18 | logger.WriteValue(key, tags[key]);
19 | logger.EndWriteObject("tags");
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/ExceptionLoggerFactory.cs:
--------------------------------------------------------------------------------
1 | namespace DevExpress.Logify.Core.Internal {
2 | public class ExceptionLoggerFactory {
3 | static ExceptionLoggerFactory instance;
4 |
5 | public IExceptionReportSender PlatformReportSender { get; set; }
6 |
7 | public static ExceptionLoggerFactory Instance {
8 | get {
9 | if (instance != null)
10 | return instance;
11 |
12 | lock (typeof(ExceptionLoggerFactory)) {
13 | if (instance != null)
14 | return instance;
15 |
16 | instance = new ExceptionLoggerFactory();
17 | return instance;
18 | }
19 | }
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/collectors/TagsCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import com.devexpress.logify.alert.core.logger.ILogger;
4 | import java.util.Map;
5 |
6 | public class TagsCollector implements IInfoCollector {
7 | private Map tags;
8 |
9 | public TagsCollector(Map tags){
10 | this.tags = tags;
11 | }
12 |
13 | public void process(Throwable ex, ILogger logger) {
14 | if (tags == null || tags.size() == 0)
15 | return;
16 |
17 | logger.beginWriteObject("tags");
18 | for (String key : tags.keySet())
19 | logger.writeValue(key, tags.get(key));
20 | logger.endWriteObject("tags");
21 | }
22 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.JS/src/collectors/browserVersionCollector.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import collectorBase from "./collectorBase.js";
3 |
4 | export default class browserVersionCollector extends collectorBase {
5 | constructor(_owner) {
6 | super(_owner);
7 | }
8 |
9 | process(win, report) {
10 | super.process(win, report);
11 |
12 | if(report.browser === undefined)
13 | report.browser = new Object();
14 |
15 | report.browser.appCodeName = win.navigator.appCodeName;
16 | report.browser.userAgent = win.navigator.userAgent;
17 | report.browser.appName = win.navigator.appName;
18 | report.browser.appVersion = win.navigator.appVersion;
19 | report.browser.language = win.navigator.language;
20 | }
21 | }
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/test/collectors/tagsCollectorTest.js:
--------------------------------------------------------------------------------
1 | import tagsCollector from "../../src/collectors/tagsCollector.js";
2 | var assert = require('chai').assert;
3 |
4 | describe('tagsCollector tests', function() {
5 |
6 | it('process with data test', function () {
7 | let collector = new tagsCollector("mocTags");
8 |
9 | let reportData = new Object();
10 |
11 | collector.process(reportData);
12 |
13 | assert.equal("mocTags", reportData.tags);
14 | });
15 |
16 | it('process without data test', function () {
17 | let collector = new tagsCollector();
18 |
19 | let reportData = new Object();
20 |
21 | collector.process(reportData);
22 |
23 | assert.equal(undefined, reportData.tags);
24 | });
25 | });
--------------------------------------------------------------------------------
/java/Core/src/main/java/com/devexpress/logify/alert/core/collectors/CompositeInfoCollector.java:
--------------------------------------------------------------------------------
1 | package com.devexpress.logify.alert.core.collectors;
2 |
3 | import com.devexpress.logify.alert.core.logger.ILogger;
4 |
5 | import java.util.ArrayList;
6 | import java.util.List;
7 |
8 | public abstract class CompositeInfoCollector implements IInfoCollector {
9 | protected List collectors = new ArrayList();
10 |
11 | protected CompositeInfoCollector() {
12 | }
13 |
14 | public void process(Throwable ex, ILogger logger) {
15 | for (IInfoCollector collector : collectors) {
16 | try {
17 | collector.process(ex, logger);
18 | } catch (Exception ignored) {
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/README.MD:
--------------------------------------------------------------------------------
1 | # Logify Alert Clients
2 |
3 | ## Platforms
4 | * [.NET](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/dotnet)
5 | * [JavaScript](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/js/Logify.Alert.JS)
6 | * [NodeJS](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/js/Logify.Alert.NodeJS)
7 | * [Delphi](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/delphi)
8 | * [Java](https://github.com/DevExpress/Logify.Alert.Clients/tree/develop/java)
9 | * [PHP](https://github.com/DevExpress/Logify.Alert.PHP/)
10 |
11 | ## Custom Clients
12 | If the described clients are not suitable for you, you can create a custom one. For more information, refer to the [Custom Clients](https://github.com/DevExpress/Logify.Alert.Clients/blob/develop/CustomClients.md) document.
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Wpf/Collectors/WpfApplicationCollector.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Threading.Tasks;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Threading;
8 | using DevExpress.Logify.Core;
9 |
10 | namespace DevExpress.Logify.Core.Internal {
11 | class WpfApplicationCollector : ApplicationCollector {
12 | public override string AppName { get { return Application.ResourceAssembly.GetName().Name; } }
13 | public override string AppVersion { get { return System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString(); } }
14 | public override string UserId { get { return String.Empty; } }
15 |
16 | public WpfApplicationCollector() : base() { }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/js/Logify.Alert.NodeJS/src/testApp.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import logifyAlert from "./logifyAlert.js"
3 |
4 | let client = new logifyAlert("B05B3BA1E17C4726ADEB59B3DB84967E");
5 | client.applicationName = "testApp";
6 | client.applicationVersion = "123";
7 | client.customData = {"Key1": "Data1", "Key2": "Data2"};
8 | client.tags = {"TagKey1": "TagData1", "TagKey2": "TagData2"};
9 |
10 | let afterReportExceptionCallback = function (e) {
11 | };
12 |
13 | client.afterReportException = afterReportExceptionCallback.bind("qwe");
14 | client.startHandling();
15 |
16 | let qwe = undefined;
17 | qwe.asd2();
18 |
19 | // let zzz = 1 / 0;
20 | //
21 | // var promise = new Promise((resolve, reject) => {
22 | // setTimeout(() => {
23 | // reject(new Error("Test error"));
24 | // }, 10);
25 | //
26 | // });
27 |
--------------------------------------------------------------------------------
/dotnet/Logify.Alert.Core/MethodCallArgumentsStorage.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Globalization;
5 | using System.Reflection;
6 | using System.Runtime.CompilerServices;
7 | using System.Threading;
8 |
9 | namespace DevExpress.Logify.Core {
10 | public class MethodCallInfo {
11 | public object Instance { get; set; }
12 | public MethodBase Method { get; set; }
13 | public IList