Coder Social home page Coder Social logo

meituan-dianping / logan Goto Github PK

View Code? Open in Web Editor NEW
5.6K 5.6K 861.0 19.89 MB

Logan is a lightweight case logging system based on mobile platform.

Home Page: https://tech.meituan.com/logan_open_source.html

License: MIT License

Java 5.53% CMake 0.17% C 80.73% JavaScript 9.66% Objective-C 1.48% Ruby 0.12% Makefile 0.11% HTML 0.22% TypeScript 1.50% Shell 0.03% Dart 0.22% SCSS 0.15% Dockerfile 0.03% Swift 0.05%

logan's People

Contributors

124688789 avatar chenwenqin avatar chenyihu avatar dependabot[bot] avatar e-snail avatar fdzhang avatar isimple4 avatar jiangteng avatar kemchenj avatar kyle-ye avatar lizhangqu avatar mr-xiaojun avatar plain-dev avatar plan-do-break-fix avatar retrospection avatar richard-cao avatar seashell113 avatar serena-li-20230331 avatar sylvia1106 avatar wrbug avatar wsxyeah avatar yaron-xiong avatar yigmmk avatar zlluo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

logan's Issues

support print function name, line, file name in log

@jiangteng in server demo the decode log is: {"c":"clogan header","f":1,"l":1539321701072,"n":"clogan","i":1,"m":true} �{"c":"1\tclick button 0\t","f":1,"l":1539321701061,"n":"","i":1,"m":true}

But it doesn't include function name, line, file name so it's not particularly convenient to find out which function triggered the log.

eg:

//printf("123"),printf("456");
#define TRACE_CMH_1 (printf("%s(%d)-<%s>: ",__FILE__, __LINE__, __FUNCTION__), printf)
 
//printf("%d""%d", 1, 2);
#define TRACE_CMH_2(fmt,...) \
	printf("%s(%d)-<%s>: "##fmt, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)

为啥java与c对应的接口会中间多加一个1?

java代码
com.dianping.logan.CLoganProtocol类里面
private native int clogan_init(String cache_path, String dir_path, int max_file,
String encrypt_key_16, String encrypt_iv_16);
private native int clogan_open(String file_name);
private native void clogan_debug(boolean is_debug);
private native int clogan_write(int flag, String log, long local_time, String thread_name, long thread_id, int is_main);
private native void clogan_flush();

这些函数对应的c文件里的代码(clogan_protocol.c clogan_protocol.h)是
Java_com_dianping_logan_CLoganProtocol_clogan_1write(...)
Java_com_dianping_logan_CLoganProtocol_clogan_1init(...)
Java_com_dianping_logan_CLoganProtocol_clogan_1open(...)
Java_com_dianping_logan_CLoganProtocol_clogan_1flush(...)
Java_com_dianping_logan_CLoganProtocol_clogan_1debug(...)

我发现函数中间多了一个1,不对应呀,我的理解应该会报错,但现实是我试了,可以编译并且成功运行正常,当我去掉那个1反而调用失败,说找不到相应实现,心中非常不解,还望大家帮忙解答,谢谢

正在打印日志时,手动杀死进程,导致日志文件不完全

hi, @Richard-Cao,我现在在安卓下面做测试,开子线程,循环打印日志10000次,每次间隔1毫秒,在循环过程中手动杀死进程,这种情况下生成的文件最后一条日志是不完整的,如图:
2018-12-07 2 19 15

我觉得这种情况会时有发生,惯用安卓的用户,很多都会通过清理进程来让手机跑的快一点

Invalid path

在dmeo中跑的时候正常,但是我把同样的代码引入项目的时候就抛异常了,初始化方法、调用方法都是一样的,但是在项目中会报无效路径,不知道什么原因,为什么会导致文件创建失败呢!

10-18 16:48:34.325 14505-15773/pacageName D/LoganTestActivity: times : 0
10-18 16:48:34.326 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.328 14505-15358/pacageName W/System.err: java.lang.IllegalArgumentException: Invalid path: /storage/emulated/0/Android/data/packageName/files/logan_v1
10-18 16:48:34.329 14505-15358/pacageName W/System.err: at android.os.StatFs.doStat(StatFs.java:46)
10-18 16:48:34.329 14505-15358/pacageName W/System.err: at android.os.StatFs.(StatFs.java:39)
10-18 16:48:34.329 14505-15358/pacageName W/System.err: at com.dianping.logan.d.d(Unknown Source)
10-18 16:48:34.329 14505-15358/pacageName W/System.err: at com.dianping.logan.d.a(Unknown Source)
10-18 16:48:34.329 14505-15358/pacageName W/System.err: at com.dianping.logan.d.a(Unknown Source)
10-18 16:48:34.330 14505-15358/pacageName W/System.err: at com.dianping.logan.d.run(Unknown Source)
10-18 16:48:34.330 14505-15358/pacageName W/System.err: Caused by: android.system.ErrnoException: statvfs failed: ENOENT (No such file or directory)
10-18 16:48:34.330 14505-15358/pacageName W/System.err: at libcore.io.Posix.statvfs(Native Method)
10-18 16:48:34.330 14505-15358/pacageName W/System.err: at libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:298)
10-18 16:48:34.331 14505-15358/pacageName W/System.err: at android.system.Os.statvfs(Os.java:500)
10-18 16:48:34.331 14505-15358/pacageName W/System.err: at android.os.StatFs.doStat(StatFs.java:44)
10-18 16:48:34.331 14505-15358/pacageName W/System.err: ... 5 more
10-18 16:48:34.332 14505-15773/pacageName D/LoganTestActivity: times : 1
10-18 16:48:34.333 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.338 14505-15773/pacageName D/LoganTestActivity: times : 2
10-18 16:48:34.339 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.344 14505-15773/pacageName D/LoganTestActivity: times : 3
10-18 16:48:34.344 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.349 14505-15773/pacageName D/LoganTestActivity: times : 4
10-18 16:48:34.350 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.360 14505-15773/pacageName D/LoganTestActivity: times : 5
10-18 16:48:34.361 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.366 14505-15773/pacageName D/LoganTestActivity: times : 6
10-18 16:48:34.366 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.371 14505-15773/pacageName D/LoganTestActivity: times : 7
10-18 16:48:34.372 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.377 14505-15773/pacageName D/LoganTestActivity: times : 8
10-18 16:48:34.377 14505-15358/pacageName D/LoganThread: Logan write start
10-18 16:48:34.382 14505-15773/pacageName D/LoganTestActivity: write log end

MacOS编译Android版报错

Android Studio 3.2RC3
NDK r15c
gradle 3.5.1
macOS 10.14

#gradle-3.5.1/bin/gradle assembleDebug --debug --stacktrace
报错信息
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Error while executing process /Users/xx/androidsdk/cmake/3.10.2.4988404/bin/cmake with arguments {-H/Users/xx/projects/app/Logan/Example/Logan-Android/logan -B/Users/xx/projects/app/Logan/Example/Logan-Android/logan/.externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/Users/xx/android-ndk-r15c -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/xx/projects/app/Logan/Example/Logan-Android/logan/build/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/Users/xx/androidsdk/cmake/3.10.2.4988404/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/Users/xx/android-ndk-r15c/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-14 -DCMAKE_C_FLAGS=-std=c11 -DBUILD_TESTING=OFF -DANDROID_TOOLCHAIN=gcc}
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] CMake Error: Could not create named generator Android Gradle - Ninja
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Generators
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Unix Makefiles = Generates standard UNIX makefiles.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Ninja = Generates build.ninja files.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Xcode = Generate Xcode project files.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] CodeBlocks - Ninja = Generates CodeBlocks project files.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] CodeBlocks - Unix Makefiles = Generates CodeBlocks project files.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] CodeLite - Ninja = Generates CodeLite project files.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] CodeLite - Unix Makefiles = Generates CodeLite project files.
20:22:08.567 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Sublime Text 2 - Ninja = Generates Sublime Text 2 project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Sublime Text 2 - Unix Makefiles
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] = Generates Sublime Text 2 project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Kate - Ninja = Generates Kate project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Kate - Unix Makefiles = Generates Kate project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Eclipse CDT4 - Ninja = Generates Eclipse CDT 4.0 project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] KDevelop3 = Generates KDevelop 3 project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] KDevelop3 - Unix Makefiles = Generates KDevelop 3 project files.
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.android.build.gradle.tasks.ExternalNativeBuildTaskUtils.executeBuildProcessAndLogError(ExternalNativeBuildTaskUtils.java:241)
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.android.build.gradle.tasks.CmakeExternalNativeJsonGenerator.executeProcess(CmakeExternalNativeJsonGenerator.java:142)
20:22:08.568 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.buildAndPropagateException(ExternalNativeJsonGenerator.java:272)
20:22:08.569 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.build(ExternalNativeJsonGenerator.java:178)
20:22:08.569 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.android.build.gradle.tasks.ExternalNativeBuildJsonTask.build(ExternalNativeBuildJsonTask.java:39)
20:22:08.569 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
20:22:08.569 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] ... 32 more
20:22:08.569 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
20:22:08.569 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger]
20:22:08.569 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED

Logan的c/c++部分能使用win的android studio编译么?

我最近试着自己使用win7 版的android studio 3.0 beta 5 的cmake编译c/c++部分(CLogan和mbedtls),要么就是编译通过,但是不生成so,要么就是报错CMake Error at D:/test/demos/testloglib/app/src/main/cpp/mbedtls/library/CMakeLists.txt:161 (install):
install TARGETS given no LIBRARY DESTINATION for shared library target
"mbedtls".
所以我想请问一下,使用这样的环境和工具,能否编译成功?或者有没有相应的教程可以让我们参考,谢谢

删除指定文件的接口

看了下 Logan.h 的接口,发现没有删除单一文件的接口,虽然也可以找到指定文件删除,还是想了解下是出于什么原因没有粒度更细的删除接口设计

测试上传日志文件的时候报错了,接收到了部分日志信息,求解

测试上传日志文件的时候报错了,接收到了部分日志信息,求解

{ Error: unexpected end of file
    at Zlib.zlibOnError [as onerror] (zlib.js:153:17) errno: -5, code: 'Z_BUF_ERROR' }
write finish
fs.js:113
    throw err;
    ^

Error: ENOENT: no such file or directory, unlink './log-demo.gz'
    at Object.unlinkSync (fs.js:916:3)
    at WriteStream.inp.pipe.on.pipe.on (/Users/yangkai/development/git/Logan/Example/Logan-Server/server.js:113:14)
    at WriteStream.emit (events.js:187:15)
    at finishMaybe (_stream_writable.js:641:14)
    at stream._final (_stream_writable.js:619:5)
    at WriteStream._final (internal/fs/streams.js:264:3)
    at callFinal (_stream_writable.js:612:10)
    at process._tickCallback (internal/process/next_tick.js:63:19)

pod install 后编译报错

Showing All Messages
/Users/ran/Code/GBSWorkSpace/tgl-poc-ios/ios/Pods/Logan/Logan/mbedtls/library/aes.c:29:10: 'mbedtls/config.h' file not found
...

请教关于日志文件的问题

读了下android的代码有以下几个问题想咨询作者,望不吝赐教

  1. 既然目前已经支持了分片写入,为何还要限制日志文件的大小,不知如此设计是否有其他考量?

某些企业应用每天的日志量很大

  1. 目前日志文件超过大小之后会禁止写入,即使上传了当天的日志也只会删除.copy的日志文件,原日志文件并不会一起清理。Logan也没有提供方法可以拿到当天的日志文件进行手动删除(通过getAllFilesInfo返回的Key和传入的path自己拼?),请问超出大小后应该如何处理?

简单的想法是再次做文件分包,上传后由后端解析合并。

Android Logan, LoganThread#quit is never used.

目前Android的Logan提供的api没有quit操作,如果有几个Action.SEND就没法终止上传。
看到LoganThread里有quit方法,但其实并没有暴露出来,而且内部也无调用,
是否应该考虑增加Logan#quit()的api

server.js 出现Error

部分Log:
start decode log file
decrypt complete
remove padding complete
{ Error: unexpected end of file
at Zlib._handle.onerror (zlib.js:355:17) errno: -5, code: 'Z_BUF_ERROR' }

start decode log file
decrypt complete
remove padding complete
write finish

start decode log file
decrypt complete
remove padding complete
write finish

start decode log file
decrypt complete
remove padding complete
write finish

start decode log file
decrypt complete
remove padding complete
write finish

start decode log file
decrypt complete
remove padding complete
{ Error: unexpected end of file
at Zlib._handle.onerror (zlib.js:355:17) errno: -5, code: 'Z_BUF_ERROR' }

start decode log file
decrypt complete
remove padding complete
write finish

可以创建log-demo.txt文件,并且有日志内容

logan parser java 解密失败

W/System.err: java.util.zip.ZipException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:166)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:80)
W/System.err: at java.util.zip.GZIPInputStream.(GZIPInputStream.java:92)
at com.gzhi.neatreader.r2.utils.LoganParser.parse(LoganParser.java:85)
at com.gzhi.neatreader.r2.main.SplashActivity.onCreate(SplashActivity.java:94)
at android.app.Activity.performCreate(Activity.java:7372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3147)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7425)
at java.lang.reflect.Method.invoke(Native Method)

咱这个库以后还更新新功能吗

日志文件不能无限大,目前Logan日志文件最大限制为10M,遇到大于10M的情况,应该如何处理最佳?是丢掉前面的日志,还是丢掉追加的日志,还是做分片处理呢?

Android运行报错

ndk r12
gradle-3.3

Build command failed.
Error while executing process D:\android\android_sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build D:\demo\Logan\Example\Logan-Android\logan.externalNativeBuild\cmake\release\x86 --target logan}
[1/4] Building C object clogan.out/CMakeFiles/clogan.dir/mmap_util.c.o
FAILED: D:\android\android_sdk\android-ndk-r12b\toolchains\x86-4.9\prebuilt\windows-x86_64\bin\i686-linux-android-gcc.exe --sysroot=D:/android/android_sdk/android-ndk-r12b/platforms/android-14/arch-x86 -ID:/demo/Logan/Logan/Clogan/../mbedtls/include -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -std=c11 -O2 -DNDEBUG -MD -MT clogan.out/CMakeFiles/clogan.dir/mmap_util.c.o -MF clogan.out\CMakeFiles\clogan.dir\mmap_util.c.o.d -o clogan.out/CMakeFiles/clogan.dir/mmap_util.c.o -c D:\demo\Logan\Logan\Clogan\mmap_util.c
D:\demo\Logan\Logan\Clogan\mmap_util.c: In function 'open_mmap_file_clogan':
D:\demo\Logan\Logan\Clogan\mmap_util.c:37:52: error: 'S_IRUSR' undeclared (first use in this function)
int fd = open(_filepath, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); //后两个添加权限
^
D:\demo\Logan\Logan\Clogan\mmap_util.c:37:52: note: each undeclared identifier is reported only once for each function it appears in
D:\demo\Logan\Logan\Clogan\mmap_util.c:37:62: error: 'S_IWUSR' undeclared (first use in this function)
int fd = open(_filepath, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); //后两个添加权限
^
D:\demo\Logan\Logan\Clogan\mmap_util.c:37:72: error: 'S_IRGRP' undeclared (first use in this function)
int fd = open(_filepath, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); //后两个添加权限
^
D:\demo\Logan\Logan\Clogan\mmap_util.c:37:82: error: 'S_IWGRP' undeclared (first use in this function)
int fd = open(_filepath, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); //后两个添加权限
^
ninja: build stopped: subcommand failed.

mmap写回的问题

每次app切掉的时候,会flush,也就是把mmap的数据写入文件。而系统把mmap从内存写回文件的时机并不确定,会不会flush的时候,mmap还没有把内存的数据写回mmap文件导致文件内容丢失?

用LoganParser-java来解密解压报错

java.util.zip.ZipException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:165)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:79)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:91)
at cn.com.agree.LoganParser.parse(LoganParser.java:95)
at cn.com.agree.Test.main(Test.java:18)

iOS客户端上传到node服务器解析出来的文本包含null(^@)

从第二行开始每行开始都有, vi下才能显示

{"c":"clogan header","f":1,"l":1539762230014,"n":"clogan","i":1,"m":true}
^@{"c":"1\tclick button 0\t","f":1,"l":1539762230006,"n":"","i":1,"m":true}
^@{"c":"1\tclick button 1\t","f":1,"l":1539762230006,"n":"","i":1,"m":true}
^@{"c":"1\tclick button 2\t","f":1,"l":1539762230006,"n":"","i":1,"m":true}

服务器跑在Windows或Mac下都是一样的效果
参考 https://stackoverflow.com/questions/9124755/symbol-in-vim

关于日志上传问题

请教下,当日志大小达到临界值时(比如达到10m),那么做到达到这个临界时上把日志上传给后台呢?

启动 server.js报错 node 版本为 4.4.3 npm 版本 2.15.1

D:\demo\Logan\Example\Logan-Server> node server.js
D:\demo\Logan\Example\Logan-Server\server.js:83
let padding = 0;
^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3

c 层支持多线程写入吗

看到java层的源码是所有日志都写入一个消费者队列,这是上层控制多线程写入吧?请问 c层支持多线程写入吗

日志在java如何解密

是否需要对已加密的日志进行额外操作 再使用cipher解密

const contentLen = (((buf.readUInt8(skips) & 0xFF) << 24) | ((buf.readUInt8(skips + 1) & 0xFF) << 16) | ((buf.readUInt8(skips + 2) & 0xFF) << 8) | (buf.readUInt8(skips + 3) & 0xFF)); skips += 4; if (skips + contentLen > buf.length) { skips -= 4; decodeLog(buf, skips); return; } const content = buf.slice(skips, skips + contentLen); skips += contentLen;

建议 增加 interceptor 的概念

建议增加 interceptor 的概念,用于对数据的处理,如加密、格式化( json、protobuf )、debug 模式下 logcat 输出,如 OkHttp 的 Interceptor

关于日志文件中日志顺序的问题

我今天在熟悉logan库,发现日志文件中日志的顺序是按照时间顺序排列,我的理解,距离当前时间越近的日志,应该对于分析来讲越重要,所以不该是append方式写入日志文件更好些么

解析出来c字段里的内容都是空的

解析出来c字段里的内容都是空的:
{"c":"{}","f":2,"l":1544095100003,"n":"NioProcessor-1","i":1641,"m":false}
{"c":"{}","f":2,"l":1544095100954,"n":"NioProcessor-2","i":1642,"m":false}
{"c":"{}","f":2,"l":1544095100963,"n":"NioProcessor-2","i":1642,"m":false}
{"c":"{}","f":2,"l":1544095671567,"n":"NioProcessor-3","i":1643,"m":false}
{"c":"{}","f":2,"l":1544095671571,"n":"NioProcessor-3","i":1643,"m":false}
{"c":"{}","f":2,"l":1544095701645,"n":"NioProcessor-3","i":1643,"m":false}
{"c":"{}","f":2,"l":1544095731716,"n":"NioProcessor-3","i":1643,"m":false}
{"c":"{}","f":2,"l":1544095761790,"n":"NioProcessor-3","i":1643,"m":false}
{"c":"{}","f":2,"l":1544095791866,"n":"NioProcessor-3","i":1643,"m":false}
{"c":"{}","f":2,"l":1544095821942,"n":"NioProcessor-3","i":1643,"m":false}

关于日志增量上传的问题?

在接入这个日志系统的过程遇到一个不合理逻辑,我想确认官方的对这个问题的看法?
场景:
12:00 开始记录日志,
13:00 时上传日志文件,
14:00 时上传日志文体

可目前遇到的问题是,为什么14:00上传的日志文件还要包括,12:00 ,13:00 这段时间产生的日志,从逻辑上不合理,我想请问是:程序代码的问题,还是什么问题?

没有增量上传的功能吗?还是增量上传需要自己去处理?

Logan上传数据后的操作

Logan上传日志数据后可以直接接入自己的后端系统,还是说集成Logan的相关后端服务语言。

多进程如何上传

App进程可以上传
其他进程中的日志,在app进程没法上传,SendLogRunnable这个抽象类中的方法只返回当前进程的文件

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.