├── .gitignore
├── Android
├── .idea
│ ├── Android.iml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
└── MXLogger
│ ├── .gitignore
│ ├── .idea
│ ├── .gitignore
│ ├── .name
│ ├── compiler.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── mxlogger
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── build.gradle
│ ├── consumer-rules.pro
│ ├── proguard-rules.pro
│ ├── secring.gpg
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── dongjiayi
│ │ │ └── mxlogger
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── cpp
│ │ │ ├── flutter-bridge.cpp
│ │ │ └── navtive-bridge.cpp
│ │ └── java
│ │ │ └── com
│ │ │ └── dongjiayi
│ │ │ └── mxlogger
│ │ │ ├── MXLogger.java
│ │ │ └── MXStoragePolicyType.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── dongjiayi
│ │ └── mxlogger
│ │ └── ExampleUnitTest.java
│ ├── mxloggerdemo
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── dongjiayi
│ │ │ └── mxloggerdemo
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── dongjiayi
│ │ │ │ └── mxloggerdemo
│ │ │ │ ├── FirstFragment.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── MyApplication.java
│ │ │ │ └── SecondFragment.java
│ │ └── res
│ │ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── drawable
│ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── content_main.xml
│ │ │ ├── fragment_first.xml
│ │ │ └── fragment_second.xml
│ │ │ ├── menu
│ │ │ └── menu_main.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── navigation
│ │ │ └── nav_graph.xml
│ │ │ ├── values-land
│ │ │ └── dimens.xml
│ │ │ ├── values-night
│ │ │ └── themes.xml
│ │ │ ├── values-w1240dp
│ │ │ └── dimens.xml
│ │ │ ├── values-w600dp
│ │ │ └── dimens.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── themes.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── dongjiayi
│ │ └── mxloggerdemo
│ │ └── ExampleUnitTest.java
│ ├── publish.gradle
│ ├── publish2.gradle
│ ├── secring3.gpg
│ └── settings.gradle
├── Core
├── CMakeLists.txt
├── MXLoggerCore.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── dongjiayi.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata
│ │ └── dongjiayi.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
├── aes
│ ├── aes_crypt.cpp
│ ├── aes_crypt.hpp
│ └── openssl
│ │ ├── openssl_aes-armv4.S
│ │ ├── openssl_aes.h
│ │ ├── openssl_aes_core.cpp
│ │ ├── openssl_aes_locl.h
│ │ ├── openssl_aesv8-armx.S
│ │ ├── openssl_arm_arch.h
│ │ └── openssl_cfb128.cpp
├── build.sh
├── debug_log.cpp
├── debug_log.hpp
├── flatbuffers
│ ├── base.h
│ ├── flatbuffers.h
│ └── stl_emulation.h
├── json
│ ├── cJSON.c
│ └── cJSON.h
├── log_enum.h
├── log_msg.cpp
├── log_msg.hpp
├── log_serialize.h
├── logger_os.cpp
├── logger_os.hpp
├── md5
│ ├── md5.c
│ └── md5.h
├── mxlogger.cpp
├── mxlogger.hpp
├── mxlogger_console.cpp
├── mxlogger_console.hpp
├── mxlogger_file_util.hpp
├── mxlogger_helper.hpp
├── mxlogger_util.cpp
├── mxlogger_util.hpp
└── sink
│ ├── base_file_sink.cpp
│ ├── base_file_sink.hpp
│ ├── mmap_sink.cpp
│ ├── mmap_sink.hpp
│ ├── sink.cpp
│ ├── sink.hpp
│ ├── windows_sink.cpp
│ └── windows_sink.hpp
├── LICENSE.TXT
├── MXLogger.podspec
├── MXLoggerCore.podspec
├── README.md
├── README_CN.md
├── flatc
├── flutter_mxlogger
├── .gitignore
├── .metadata
├── CHANGELOG.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
│ ├── .gitignore
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── coderdjy
│ │ └── mxlogger
│ │ └── FlutterMxloggerPlugin.java
├── example
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ │ ├── .gitignore
│ │ ├── app
│ │ │ ├── build.gradle
│ │ │ └── src
│ │ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── main
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── flutter_mxlogger_example
│ │ │ │ │ │ └── MainActivity.java
│ │ │ │ └── res
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── values-night
│ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values
│ │ │ │ │ └── styles.xml
│ │ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ └── gradle-wrapper.properties
│ │ └── settings.gradle
│ ├── ios
│ │ ├── .gitignore
│ │ ├── Flutter
│ │ │ ├── AppFrameworkInfo.plist
│ │ │ ├── Debug.xcconfig
│ │ │ └── Release.xcconfig
│ │ ├── Podfile
│ │ ├── Podfile.lock
│ │ ├── Runner.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ └── xcshareddata
│ │ │ │ └── xcschemes
│ │ │ │ └── Runner.xcscheme
│ │ ├── Runner.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── Runner
│ │ │ ├── AppDelegate.h
│ │ │ ├── AppDelegate.m
│ │ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ └── LaunchImage.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ └── README.md
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── main.m
│ ├── lib
│ │ ├── log_page.dart
│ │ └── main.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── widget_test.dart
├── flutter_mxlogger.iml
├── ios
│ ├── .gitignore
│ ├── Assets
│ │ └── .gitkeep
│ ├── Classes
│ │ ├── FlutterMxloggerPlugin.h
│ │ ├── FlutterMxloggerPlugin.mm
│ │ └── flutter-bridge.mm
│ └── flutter_mxlogger.podspec
├── lib
│ ├── flutter_mxlogger.dart
│ └── src
│ │ ├── flutter_mxlogger.dart
│ │ ├── flutter_mxlogger_web.dart
│ │ └── flutter_none.dart
├── pub.sh
├── pubspec.yaml
└── test
│ └── flutter_mxlogger_test.dart
├── iOS
├── .gitignore
├── MXLogger
│ ├── MXLogger.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ ├── xcshareddata
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ └── xcuserdata
│ │ │ │ └── dongjiayi.xcuserdatad
│ │ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ │ └── dongjiayi.xcuserdatad
│ │ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ ├── MXLogger
│ │ ├── Info.plist
│ │ ├── MXLogger.h
│ │ └── MXLogger.mm
│ └── MXLoggerTests
│ │ ├── Info.plist
│ │ └── MXLoggerTests.m
└── MXLoggerDemo
│ ├── MXLoggerDemo.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcuserdata
│ │ │ └── dongjiayi.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcshareddata
│ │ └── xcschemes
│ │ │ └── MXLoggerDemo.xcscheme
│ └── xcuserdata
│ │ └── dongjiayi.xcuserdatad
│ │ ├── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
│ ├── MXLoggerDemo
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── LogListViewController.h
│ ├── LogListViewController.m
│ ├── LogListViewController.xib
│ ├── LogViewController.h
│ ├── LogViewController.m
│ ├── LogViewController.xib
│ ├── SceneDelegate.h
│ ├── SceneDelegate.m
│ ├── ViewController.h
│ ├── ViewController.m
│ └── main.m
│ ├── MXLoggerDemoTests
│ ├── Info.plist
│ └── MXLoggerDemoTests.m
│ └── MXLoggerDemoUITests
│ ├── Info.plist
│ └── MXLoggerDemoUITests.m
├── icon
├── 20230210103021.jpg
├── MX 主LOGO 2000x1500.png
├── MX 白色LOGO 2000x1500.png
├── MX 黑色LOGO 2000x1500.png
├── circle.png
├── haoshi.jpg
├── jiegoutu.jpg
├── logo.png
├── logo_400.png
├── logo_白色.png
├── logo_黑色.png
├── mx_1.jpg
├── mx_2.jpg
├── mx_3.jpg
├── mx_4.jpg
├── mxlogger_ memory.jpg
├── mxlogger_analyzer_desktop.mp4
└── mxlogger_analyzer_pckage.mp4
├── log_msg.fbs
├── mxlogger.sh
├── mxlogger_analyzer.dmg
├── mxlogger_analyzer
├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── mxlogger_analyzer
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── assets
│ └── images
│ │ ├── circle.png
│ │ ├── logo.png
│ │ └── text.png
├── ios
│ ├── .gitignore
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ └── LaunchImage.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ └── README.md
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ └── RunnerTests
│ │ └── RunnerTests.swift
├── lib
│ ├── main.dart
│ ├── main_desktop.dart
│ ├── main_package.dart
│ ├── page
│ │ ├── desktop
│ │ │ ├── desktop_page.dart
│ │ │ └── drop_target_view.dart
│ │ ├── setting
│ │ │ └── setting_page.dart
│ │ └── view
│ │ │ └── crypt_dialog.dart
│ ├── plug
│ │ └── flutter_side_menu
│ │ │ ├── flutter_side_menu.dart
│ │ │ └── src
│ │ │ ├── component
│ │ │ ├── resizer.dart
│ │ │ └── resizer_toggle.dart
│ │ │ ├── data
│ │ │ ├── resizer_data.dart
│ │ │ ├── resizer_toggle_data.dart
│ │ │ ├── side_menu_builder_data.dart
│ │ │ ├── side_menu_data.dart
│ │ │ └── side_menu_item_data.dart
│ │ │ ├── item
│ │ │ ├── export.dart
│ │ │ ├── side_menu_item_divider.dart
│ │ │ ├── side_menu_item_tile.dart
│ │ │ └── side_menu_item_title.dart
│ │ │ ├── side_menu.dart
│ │ │ ├── side_menu_body.dart
│ │ │ ├── side_menu_controller.dart
│ │ │ ├── side_menu_mode.dart
│ │ │ ├── side_menu_position.dart
│ │ │ ├── side_menu_priority.dart
│ │ │ ├── side_menu_width_mixin.dart
│ │ │ └── utils
│ │ │ ├── constants.dart
│ │ │ ├── device_screen_type.dart
│ │ │ └── utils.dart
│ ├── provider
│ │ └── mxlogger_provider.dart
│ └── storage
│ │ └── mxlogger_storage.dart
├── linux
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── macos
│ ├── .gitignore
│ ├── Flutter
│ │ ├── Flutter-Debug.xcconfig
│ │ ├── Flutter-Release.xcconfig
│ │ └── GeneratedPluginRegistrant.swift
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ ├── app_icon_64.png
│ │ │ │ ├── logo-1.png
│ │ │ │ ├── logo-2.png
│ │ │ │ ├── logo-3.png
│ │ │ │ ├── logo-4.png
│ │ │ │ ├── logo-5.png
│ │ │ │ ├── logo-6.png
│ │ │ │ ├── logo-7.png
│ │ │ │ ├── logo-8.png
│ │ │ │ ├── logo-9.png
│ │ │ │ └── logo.png
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ └── MainMenu.xib
│ │ ├── Configs
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ ├── Release.entitlements
│ │ ├── Runner-Bridging-Header.h
│ │ ├── empty.h
│ │ └── empty.m
│ └── RunnerTests
│ │ └── RunnerTests.swift
├── mxlogger_analyzer_lib
│ ├── .gitignore
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── assets
│ │ └── images
│ │ │ └── logo.png
│ ├── lib
│ │ ├── mxlogger_analyzer_lib.dart
│ │ └── src
│ │ │ ├── analyzer_data
│ │ │ ├── analyzer_binary.dart
│ │ │ ├── analyzer_database.dart
│ │ │ └── log_serialize.dart
│ │ │ ├── component
│ │ │ ├── mxlogger_button.dart
│ │ │ ├── mxlogger_text.dart
│ │ │ └── mxlogger_textfield.dart
│ │ │ ├── dependencies
│ │ │ ├── aes_crypt
│ │ │ │ ├── aes_crypt_null_safe.dart
│ │ │ │ └── src
│ │ │ │ │ ├── aes.dart
│ │ │ │ │ ├── aescrypt.dart
│ │ │ │ │ ├── cryptor.dart
│ │ │ │ │ ├── exceptions.dart
│ │ │ │ │ └── extentions.dart
│ │ │ └── flat_buffers
│ │ │ │ ├── flat_buffers.dart
│ │ │ │ ├── flex_buffers.dart
│ │ │ │ └── src
│ │ │ │ ├── builder.dart
│ │ │ │ ├── reference.dart
│ │ │ │ └── types.dart
│ │ │ ├── extends
│ │ │ └── async_extends.dart
│ │ │ ├── level
│ │ │ └── mx_level.dart
│ │ │ ├── mxdebug_page.dart
│ │ │ ├── page
│ │ │ └── debug_page
│ │ │ │ ├── debug_drawer.dart
│ │ │ │ ├── debug_page.dart
│ │ │ │ └── menu_list_state.dart
│ │ │ ├── provider
│ │ │ ├── level_list_state.dart
│ │ │ ├── mxlogger_provider.dart
│ │ │ └── mxlogger_repository.dart
│ │ │ ├── screen
│ │ │ ├── change_log_screen
│ │ │ │ └── change_log_screen.dart
│ │ │ ├── detail_screen
│ │ │ │ ├── mxlogger_detail_screen.dart
│ │ │ │ └── view
│ │ │ │ │ └── flutter_json_viewer.dart
│ │ │ └── home_screen
│ │ │ │ ├── home_screen.dart
│ │ │ │ ├── log_model.dart
│ │ │ │ ├── search_dialog.dart
│ │ │ │ └── widget
│ │ │ │ ├── home_log_list_view.dart
│ │ │ │ ├── search_app_bar.dart
│ │ │ │ └── search_result_wrap.dart
│ │ │ └── theme
│ │ │ └── mx_theme.dart
│ ├── pub.sh
│ ├── pubspec.yaml
│ └── test
│ │ └── mxlogger_analyzer_lib_test.dart
├── pub.sh
├── pubspec.lock
├── pubspec.yaml
├── test
│ └── widget_test.dart
├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ ├── Icon-512.png
│ │ ├── Icon-maskable-192.png
│ │ └── Icon-maskable-512.png
│ ├── index.html
│ └── manifest.json
└── windows
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
│ └── runner
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── resources
│ └── app_icon.ico
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── mxlogger_core.sh
└── 性能测试demo.zip
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .dart_tool/
3 |
4 | .packages
5 | .pub/
6 |
7 | build/
8 |
--------------------------------------------------------------------------------
/Android/.idea/Android.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Android/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Android/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Android/MXLogger/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 | local.properties
16 |
--------------------------------------------------------------------------------
/Android/MXLogger/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/Android/MXLogger/.idea/.name:
--------------------------------------------------------------------------------
1 | mxloggerdemo
--------------------------------------------------------------------------------
/Android/MXLogger/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Android/MXLogger/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 |
21 |
--------------------------------------------------------------------------------
/Android/MXLogger/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Android/MXLogger/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Android/MXLogger/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | ext {
4 | kotlin_version = "1.6.10"
5 | dokka_version = '1.4.10.2'
6 | }
7 | repositories {
8 | google()
9 | mavenCentral()
10 | }
11 | dependencies {
12 | classpath "com.android.tools.build:gradle:7.0.3"
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 |
15 | classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
16 |
17 | // NOTE: Do not place your application dependencies here; they belong
18 | // in the individual module build.gradle files
19 | }
20 | }
21 |
22 | task clean(type: Delete) {
23 | delete rootProject.buildDir
24 | }
--------------------------------------------------------------------------------
/Android/MXLogger/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
--------------------------------------------------------------------------------
/Android/MXLogger/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Android/MXLogger/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Apr 07 14:37:27 CST 2022
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # For more information about using CMake with Android Studio, read the
2 | # documentation: https://d.android.com/studio/projects/add-native-code.html
3 |
4 | # Sets the minimum version of CMake required to build the native library.
5 |
6 | cmake_minimum_required(VERSION 3.10.0)
7 |
8 |
9 |
10 | project("mxlogger")
11 |
12 | add_subdirectory(../../../Core Core)
13 |
14 | add_library(
15 | mxlogger
16 | SHARED
17 | src/main/cpp/navtive-bridge.cpp
18 | src/main/cpp/flutter-bridge.cpp
19 | )
20 |
21 | set_target_properties(mxlogger PROPERTIES
22 | CXX_STANDARD 17
23 | CXX_EXTENSIONS OFF
24 | POSITION_INDEPENDENT_CODE ON
25 | )
26 | find_library(
27 | log-lib
28 | log )
29 |
30 |
31 | target_link_libraries(
32 | mxlogger
33 | MXLoggerCore
34 | ${log-lib} )
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxlogger/consumer-rules.pro
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Keep all native methods, their classes and any classes in their descriptors
2 | -keepclasseswithmembers,includedescriptorclasses class com.dongjiayi.mxlogger.** {
3 | native ;
4 | long nativeHandle;
5 | private static *** defaultDiskCacheDirectory(***);
6 | private static *** userCacheDirectory(***);
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/src/androidTest/java/com/dongjiayi/mxlogger/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxlogger;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.dongjiayi.mxlogger.test", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/src/main/java/com/dongjiayi/mxlogger/MXStoragePolicyType.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxlogger;
2 |
3 | public enum MXStoragePolicyType {
4 | /**
5 | * 按天存储 对应文件名: 2023-01-11_filename.mx
6 | */
7 | YYYY_MM_DD,
8 | /**
9 | * 按小时存储 对应文件名: 2023-01-11-15_filename.mx
10 | */
11 | YYYY_MM_DD_HH,
12 | /**
13 | * 按周存储 对应文件名: 2023-01-02w_filename.mx(02w是指一年中的第2周)
14 | */
15 | YYYY_WW,
16 | /**
17 | * 按月存储 对应文件名: 2023-01_filename.mx
18 | */
19 | YYYY_MM
20 | }
21 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxlogger/src/test/java/com/dongjiayi/mxlogger/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxlogger;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/androidTest/java/com/dongjiayi/mxloggerdemo/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxloggerdemo;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.dongjiayi.mxloggerdemo", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/java/com/dongjiayi/mxloggerdemo/MyApplication.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxloggerdemo;
2 |
3 | import android.app.Application;
4 |
5 | import com.dongjiayi.mxlogger.MXLogger;
6 |
7 | public class MyApplication extends Application {
8 | @Override
9 | public void onCreate() {
10 | super.onCreate();
11 |
12 | }
13 |
14 | @Override
15 | public void onTerminate() {
16 | super.onTerminate();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/java/com/dongjiayi/mxloggerdemo/SecondFragment.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxloggerdemo;
2 |
3 | import android.os.Bundle;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 |
8 | import androidx.annotation.NonNull;
9 | import androidx.fragment.app.Fragment;
10 | import androidx.navigation.fragment.NavHostFragment;
11 |
12 | import com.dongjiayi.mxloggerdemo.databinding.FragmentSecondBinding;
13 |
14 | public class SecondFragment extends Fragment {
15 |
16 | private FragmentSecondBinding binding;
17 |
18 | @Override
19 | public View onCreateView(
20 | LayoutInflater inflater, ViewGroup container,
21 | Bundle savedInstanceState
22 | ) {
23 |
24 | binding = FragmentSecondBinding.inflate(inflater, container, false);
25 | return binding.getRoot();
26 |
27 | }
28 |
29 | public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
30 | super.onViewCreated(view, savedInstanceState);
31 |
32 | binding.buttonSecond.setOnClickListener(new View.OnClickListener() {
33 | @Override
34 | public void onClick(View view) {
35 | NavHostFragment.findNavController(SecondFragment.this)
36 | .navigate(R.id.action_SecondFragment_to_FirstFragment);
37 | }
38 | });
39 | }
40 |
41 | @Override
42 | public void onDestroyView() {
43 | super.onDestroyView();
44 | binding = null;
45 | }
46 |
47 | }
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/layout/content_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
19 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/layout/fragment_first.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
19 |
28 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/layout/fragment_second.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
17 |
18 |
27 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/mxloggerdemo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/navigation/nav_graph.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
17 |
18 |
23 |
24 |
27 |
28 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 48dp
3 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values-w1240dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 200dp
3 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values-w600dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 48dp
3 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 16dp
3 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | mxloggerdemo
3 | Settings
4 |
5 | First Fragment
6 | Second Fragment
7 | Next
8 | Previous
9 |
10 | Hello first fragment
11 | Hello second fragment. Arg: %1$s
12 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Android/MXLogger/mxloggerdemo/src/test/java/com/dongjiayi/mxloggerdemo/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.dongjiayi.mxloggerdemo;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/Android/MXLogger/secring3.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Android/MXLogger/secring3.gpg
--------------------------------------------------------------------------------
/Android/MXLogger/settings.gradle:
--------------------------------------------------------------------------------
1 | dependencyResolutionManagement {
2 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
3 | repositories {
4 | google()
5 | mavenCentral()
6 | jcenter() // Warning: this repository is going to shut down soon
7 | }
8 | }
9 | rootProject.name = "mxloggerdemo"
10 | include ':mxloggerdemo'
11 | include ':mxlogger'
12 |
--------------------------------------------------------------------------------
/Core/MXLoggerCore.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Core/MXLoggerCore.xcodeproj/project.xcworkspace/xcuserdata/dongjiayi.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/coder-dongjiayi/MXLogger/33cb8a68e5bcbf69dd91a3bc4af696825b7c4c46/Core/MXLoggerCore.xcodeproj/project.xcworkspace/xcuserdata/dongjiayi.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Core/MXLoggerCore.xcodeproj/xcuserdata/dongjiayi.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | MXLoggerCore.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 1
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Core/aes/aes_crypt.hpp:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ifndef AES_CRYPT_H_
4 | #define AES_CRYPT_H_
5 | #ifdef __cplusplus
6 |
7 |
8 | #include
9 | #include
10 |
11 |
12 | namespace openssl {
13 | struct AES_KEY;
14 | }
15 |
16 | const size_t AES_KEY_LEN = 16;
17 | const size_t AES_KEY_BITSET_LEN = 128;
18 |
19 | namespace mxlogger {
20 |
21 | class aes_crypt {
22 | private:
23 | uint8_t m_vector[AES_KEY_LEN] = {};
24 | uint8_t m_key[AES_KEY_LEN] = {};
25 |
26 | uint32_t m_number = 0;
27 | openssl::AES_KEY *m_aesKey = nullptr;
28 |
29 |
30 |
31 | public:
32 | aes_crypt();
33 |
34 | ~aes_crypt();
35 |
36 | void set_crypt_key(const void *key, size_t keyLength, void *iv , size_t ivLength );
37 |
38 | void encrypt(const void *input, void *output, size_t length);
39 |
40 | void decrypt(const void *input, void *output, size_t length);
41 |
42 | void reset_iv(const void *iv = nullptr, size_t ivLength = 0);
43 |
44 | };
45 |
46 | }
47 |
48 | #endif
49 | #endif
50 |
51 |
--------------------------------------------------------------------------------
/Core/aes/openssl/openssl_aes_locl.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
3 | *
4 | * Licensed under the OpenSSL license (the "License"). You may not use
5 | * this file except in compliance with the License. You can obtain a copy
6 | * in the file LICENSE in the source distribution or at
7 | * https://www.openssl.org/source/license.html
8 | */
9 |
10 | #ifndef HEADER_AES_LOCL_H
11 | # define HEADER_AES_LOCL_H
12 | #ifdef __cplusplus
13 |
14 | # include
15 | # include
16 | # include
17 | # include
18 |
19 | # if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64))
20 | # define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
21 | # define GETU32(p) SWAP(*((u32 *)(p)))
22 | # define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
23 | # else
24 | # define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3]))
25 | # define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); }
26 | # endif
27 |
28 | # ifdef AES_LONG
29 | typedef unsigned long u32;
30 | # else
31 | typedef unsigned int u32;
32 | # endif
33 | typedef unsigned short u16;
34 | typedef unsigned char u8;
35 |
36 | #endif
37 | #endif /* !HEADER_AES_LOCL_H */
38 |
--------------------------------------------------------------------------------
/Core/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | rm -r build-ios
3 | mkdir build-ios
4 | cd build-ios
5 |
6 | cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=./ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS=arm64 -DDEPLOYMENT_TARGET=12.2 -DENABLE_STRICT_TRY_COMPILE=TRUE -DENABLE_VISIBILITY=TRUE -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=UBX9CH9GDX
7 | cmake --build . --config Debug
8 | #cmake --build . --config Release
--------------------------------------------------------------------------------
/Core/debug_log.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // debug_log.cpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2022/6/17.
6 | //
7 |
8 | #include "debug_log.hpp"
9 | #include
10 | #ifdef __ANDROID__
11 | #include
12 | #endif
13 | std::string _debug_log(int level, const char *filename, const char *func, int line, const char *format, ...){
14 |
15 |
16 | std::string message;
17 | char buffer[16];
18 |
19 | va_list args;
20 | va_start(args, format);
21 | auto length = std::vsnprintf(buffer, sizeof(buffer), format, args);
22 | va_end(args);
23 |
24 | if (length < 0) {
25 | message = {};
26 | } else if (length < sizeof(buffer)) {
27 | message = std::string(buffer, static_cast(length));
28 | } else {
29 | message.resize(static_cast(length), '\0');
30 | va_start(args, format);
31 | std::vsnprintf(const_cast(message.data()), static_cast(length) + 1, format, args);
32 | va_end(args);
33 | }
34 | std::string info_str = level == 0 ? "[mxlogger_info]" : "[mxlogger_error]";
35 | #ifdef __ANDROID__
36 | __android_log_write(level ==0 ? ANDROID_LOG_DEBUG : ANDROID_LOG_ERROR, info_str.data(), message.c_str());
37 | #elif __APPLE__
38 | printf("%s %s\n",info_str.c_str(), message.c_str());
39 | #endif
40 |
41 | return info_str + message;
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/Core/debug_log.hpp:
--------------------------------------------------------------------------------
1 | //
2 | // debug_log.hpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2022/6/17.
6 | //
7 |
8 | #ifndef debug_log_hpp
9 | #define debug_log_hpp
10 |
11 | #include
12 | #include
13 | extern std::string _debug_log(int level,const char *filename, const char *func, int line, const char *format, ...);
14 |
15 | # define MXLoggerError(format, ...) \
16 | _debug_log(1,__FILE_NAME__, __func__, __LINE__, format, \
17 | ##__VA_ARGS__)
18 |
19 |
20 |
21 | # define MXLoggerInfo(format, ...) \
22 | _debug_log(0,__FILE_NAME__, __func__, __LINE__, format, \
23 | ##__VA_ARGS__)
24 |
25 |
26 | #endif /* debug_log_hpp */
27 |
--------------------------------------------------------------------------------
/Core/log_enum.h:
--------------------------------------------------------------------------------
1 | //
2 | // logger_enum.h
3 | // Logger
4 | //
5 | // Created by 董家祎 on 2022/3/11.
6 | //
7 |
8 | #ifndef log_enum_h
9 | #define log_enum_h
10 |
11 |
12 | static const char *level_names[]{"DEBUG","INFO","WARN","ERROR","FATAL"};
13 | static const char * level_icons[]{"🟩","🟦","🟨","🟥","❌"};
14 | namespace policy {
15 | enum storage_policy: int {
16 | yyyy_MM = 0,
17 | yyyy_ww = 1,
18 | yyyy_MM_dd = 2,
19 | yyyy_MM_dd_HH = 3,
20 | };
21 |
22 | }
23 |
24 | namespace level {
25 | enum level_enum : int {
26 |
27 | debug = 0,
28 | info = 1,
29 | warn = 2,
30 | error = 3,
31 | fatal = 4,
32 | };
33 |
34 |
35 |
36 | }
37 |
38 | #endif /* log_enum_h */
39 |
--------------------------------------------------------------------------------
/Core/log_msg.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // log_msg.cpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2022/4/13.
6 | //
7 |
8 | #include "log_msg.hpp"
9 | #include "logger_os.hpp"
10 | #include "mxlogger_helper.hpp"
11 | namespace mxlogger{
12 | namespace details{
13 |
14 | log_msg::log_msg(level::level_enum _level, const char* _name,const char* _tag,const char* _msg,bool _is_main_thread):level(_level),name(_name),tag(_tag),msg(_msg),is_main_thread(_is_main_thread),thread_id(logger_os::thread_id()),now_time(std::chrono::system_clock::now()) {
15 | time_stamp = mxlogger_helper::time_stamp_microseconds(now_time);
16 |
17 | }
18 |
19 |
20 |
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/Core/log_msg.hpp:
--------------------------------------------------------------------------------
1 | //
2 | // log_msg.hpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2022/4/13.
6 | //
7 |
8 | #ifndef log_msg_hpp
9 | #define log_msg_hpp
10 |
11 | #include
12 | #include
13 | #include "log_enum.h"
14 | #include
15 |
16 | using namespace std;
17 | namespace mxlogger {
18 | namespace details{
19 |
20 | struct log_msg{
21 | log_msg() = default;
22 | ~log_msg() = default;
23 | log_msg(level::level_enum level, const char* name,const char* tag,const char* msg,bool is_main_thread);
24 | const char* name;
25 |
26 | const char* tag;
27 |
28 | size_t thread_id{0};
29 |
30 | bool is_main_thread;
31 |
32 | const char* msg;
33 |
34 | int64_t time_stamp;
35 |
36 | std::chrono::system_clock::time_point now_time;
37 |
38 | level::level_enum level{level::debug};
39 |
40 | };
41 |
42 | }
43 | }
44 |
45 | #endif /* log_msg_hpp */
46 |
--------------------------------------------------------------------------------
/Core/logger_os.hpp:
--------------------------------------------------------------------------------
1 | //
2 | // logger_os.hpp
3 | // Logger
4 | //
5 | // Created by 董家祎 on 2022/3/16.
6 | //
7 |
8 | #ifndef logger_os_hpp
9 | #define logger_os_hpp
10 | #include
11 | namespace mxlogger {
12 | namespace details{
13 | class logger_os{
14 | public:
15 | static size_t thread_id();
16 | private:
17 | static size_t thread_id_();
18 |
19 | };
20 | }
21 | }
22 |
23 | #endif /* logger_os_hpp */
24 |
--------------------------------------------------------------------------------
/Core/mxlogger_console.hpp:
--------------------------------------------------------------------------------
1 | //
2 | // mxloger_console.hpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2023/2/9.
6 | //
7 |
8 | #ifndef mxlogger_console_hpp
9 | #define mxlogger_console_hpp
10 |
11 | #include
12 | #include "log_msg.hpp"
13 | namespace mxlogger{
14 | class mxlogger_console{
15 | public:
16 |
17 | static void print(const details::log_msg& msg);
18 | private:
19 | static std::string gen_console_str(const details::log_msg& msg);
20 |
21 | };
22 | }
23 | #endif /* mxlogger_console_hpp */
24 |
--------------------------------------------------------------------------------
/Core/mxlogger_util.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // mxlogger_util.cpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2022/5/7.
6 | //
7 |
8 | #include "mxlogger_util.hpp"
9 | #include "mxlogger_file_util.hpp"
10 | namespace mxlogger{
11 | namespace util{
12 |
13 |
14 | void mxlogger_util::select_log_form_path(const char* path,std::vector> *destination,const char* cryptKey, const char* iv){
15 |
16 |
17 | select_form_path(path, destination,cryptKey,iv);
18 |
19 |
20 |
21 | }
22 |
23 | int mxlogger_util::select_logfiles_dir(const char* dir,std::vector> *destination){
24 |
25 |
26 | int r = mxlogger::get_files(destination, dir);
27 |
28 |
29 | return r;
30 | }
31 |
32 |
33 | };
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/Core/mxlogger_util.hpp:
--------------------------------------------------------------------------------
1 | //
2 | // mxlogger_util.hpp
3 | // MXLoggerCore
4 | //
5 | // Created by 董家祎 on 2022/5/7.
6 | //
7 |
8 | #ifndef mxlogger_util_hpp
9 | #define mxlogger_util_hpp
10 |
11 | #include
12 | #include
13 | #include