Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xlog 单进程多文件隔离支持 #597

Closed
haizhiyun opened this issue Apr 29, 2019 · 34 comments
Closed

xlog 单进程多文件隔离支持 #597

haizhiyun opened this issue Apr 29, 2019 · 34 comments

Comments

@haizhiyun
Copy link

你好,想请教下,如果我自己修改多文件支持的话,修改思路如下,不知道还有哪些没有考虑周全的:
appender.cc 里面的静态的东西 改成类属性所属的东西

@garryyan
Copy link
Collaborator

修改思路可参考:feature/xlog_multi_file_from_master 分支

@haizhiyun
Copy link
Author

@garryyan 多谢,试了下,上面那种修改问题很多,会参考下你的思路。
不过还是希望官方能推动这个实现,感觉很多场景还是需要这个的

@haizhiyun
Copy link
Author

feature/xlog_multi_file_from_maste分支的源码编译xlog库太大:是哪里有问题吗
677472 5 15 13:47 libc++_shared.so (600K以上)
3289600 5 15 13:47 libmarsxlog.so (3M 以上)

编译选项:
python build_android.py

  1. Clean && build mars.
  2. Build incrementally mars.
  3. Clean && build xlog.
  4. Exit
    3

@garryyan garryyan reopened this May 17, 2019
@garryyan
Copy link
Collaborator

@garryyan 多谢,试了下,上面那种修改问题很多,会参考下你的思路。
不过还是希望官方能推动这个实现,感觉很多场景还是需要这个的

后续会支持,最近有其他优先级比较高的工作要做,所以暂时搁置了

==================Output========================
libs(release): libraries/mars_xlog_sdk/libs/armeabi
symbols(must store permanently): libraries/mars_xlog_sdk/obj/local/armeabi

注意编译结束后的提示信息,真正用来发布的库在libraries/mars_xlog_sdk/libs/armeabi,你看到的 3M 的是符号信息,位置在libraries/mars_xlog_sdk/obj/local/armeabi,符号信息也需要永久保存,方便后面 ndk-stack

@wangli135
Copy link

wangli135 commented May 22, 2019

能说下当前完成的工作和未完成的工作吗?有这个需求,想就着你这个分支后面继续开发 @garryyan 目前看起来是c++这边改造完成了,java那边需要把接口改过来,不知道我看的对不对

@garryyan
Copy link
Collaborator

@wangli135 java 那边的接口还没改过来,不能直接通过 Log.i去打印了,需要有日志实例。
最重要的,代码需要灰度,这个流程也没走。

@wangli135
Copy link

大佬回复速度好及时。我试着改了下java接口,确实可以多文件了,不过好像有点不太稳定,会有SIGSEGV崩溃

@garryyan garryyan pinned this issue May 22, 2019
@garryyan
Copy link
Collaborator

所以其实也缺少了测试,因为代码都不算完成呢,🤣

@garryyan garryyan changed the title 多文件隔离支持 xlog 单进程多文件隔离支持 May 22, 2019
@wangli135
Copy link

期待更新

1 similar comment
@xabad
Copy link

xabad commented May 25, 2019

期待更新

@haizhiyun
Copy link
Author

有进展吗,可以参与测试

@milkywayriver
Copy link

期待更新

@xabad
Copy link

xabad commented Nov 4, 2019

期待后续

@brady2037
Copy link

期待更新

1 similar comment
@EthanCo
Copy link

EthanCo commented Feb 24, 2020

期待更新

@0x1306a94
Copy link

0x1306a94 commented Apr 16, 2020

iOS端
我的项目用 pod 集成了 A(静态库) B(动态库) 两个库, A B 两个库都有使用xlog记录日志.
我自己又编译了一份xlog,然后集成到项目中,并在main中初始化了xlog
其中B库的日志是加密的, 但是由于我的是在main中初始化的,最后就好导致B库中的日志和我的日志写到一起了
但是A库的日志又完全不受影响,还是写到他自己的日志目录下的

@zyfu0000
Copy link

zyfu0000 commented Jul 24, 2020

https://github.com/zyfu0000/mars

可以试试我们的 fork,feature/xlog_multi_file_from_maste 分支上修改而来,已经线上验证

@haizhiyun
Copy link
Author

看到最新提交日志支持多文件,是支持不同的日志写入不同的文件吗?有使用说明没

@zyfu0000
Copy link

@haizhiyun 是的,可以看看代码实现。很容易理解

@haizhiyun
Copy link
Author

@haizhiyun 是的,可以看看代码实现。很容易理解

ok !辛苦,感谢提供一个强大的开源库

@mhp699379
Copy link

https://github.com/zyfu0000/mars

可以试试我们的 fork,feature/xlog_multi_file_from_maste 分支上修改而来,已经线上验证

大佬,请问如何开启多文件隔离的功能呢,我在iOS 上创建了两个打印日志的单例,分别是两个文件夹路径,可是还是会打印到第一个文件上面, 日志输出“appender has already been opened.”

@a8453770
Copy link

a8453770 commented Jan 6, 2022

期待更新

@WhityLL
Copy link

WhityLL commented Apr 29, 2022

期待支持多文件写日志

@lunawye

This comment was marked as outdated.

@0x1306a94
Copy link

不是已经提供了多文件支持吗 xlogger_interface.h

@lunawye
Copy link

lunawye commented Jun 13, 2022

文件

就是不用appender.h 直接用xlogger_interface.h来初始化是嘛?
谢谢,我再试一下,自己写有时候看不明白

@lunawye
Copy link

lunawye commented Jun 13, 2022

不是已经提供了多文件支持吗 xlogger_interface.h

可是文件的config不是始终都是同一个吗?

@0x1306a94
Copy link

不是已经提供了多文件支持吗 xlogger_interface.h

可是文件的config不是始终都是同一个吗?

// init
do {
    mars::xlog::XLogConfig config;
    config.logdir_ = logPath;
    config.nameprefix_ = "A";

    mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

do {
   mars::xlog::XLogConfig config;
   config.logdir_ = logPath;
   config.nameprefix_ = "B";

   mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

// write
do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("A");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("B");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

@lunawye
Copy link

lunawye commented Jun 13, 2022

不是已经提供了多文件支持吗 xlogger_interface.h

可是文件的config不是始终都是同一个吗?

// init
do {
    mars::xlog::XLogConfig config;
    config.logdir_ = logPath;
    config.nameprefix_ = "A";

    mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

do {
   mars::xlog::XLogConfig config;
   config.logdir_ = logPath;
   config.nameprefix_ = "B";

   mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

// write
do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("A");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("B");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

谢谢你!🙏🙏,我昨晚弄了好久都不行,我现在就去试试,爱你。

@lunawye
Copy link

lunawye commented Jun 13, 2022

不是已经提供了多文件支持吗 xlogger_interface.h

可是文件的config不是始终都是同一个吗?

// init
do {
    mars::xlog::XLogConfig config;
    config.logdir_ = logPath;
    config.nameprefix_ = "A";

    mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

do {
   mars::xlog::XLogConfig config;
   config.logdir_ = logPath;
   config.nameprefix_ = "B";

   mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

// write
do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("A");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("B");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

太谢谢你啦!我自己弄了好久都没弄明白,现在可以啦,谢谢🙏,感恩有你🌹🌹🌹__

@lunawye
Copy link

lunawye commented Jul 8, 2022

[F]decode_log_file.py decode error len=1253 多个文件解密的时候出现这个是为什么呀?

@lunawye
Copy link

lunawye commented Jul 12, 2022

不是已经提供了多文件支持吗 xlogger_interface.h

可是文件的config不是始终都是同一个吗?

// init
do {
    mars::xlog::XLogConfig config;
    config.logdir_ = logPath;
    config.nameprefix_ = "A";

    mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

do {
   mars::xlog::XLogConfig config;
   config.logdir_ = logPath;
   config.nameprefix_ = "B";

   mars::comm::XloggerCategory *logger = mars::xlog::NewXloggerInstance(config, level);
} while (0);

// write
do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("A");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

do {
    mars::comm::XloggerCategory *logger = mars::xlog::GetXloggerInstance("B");
    if (logger == nullptr) {
        return;
    }
    mars::xlog::XloggerWrite(uintptr_t(logger), NULL, "log message");
} while (0);

可以问问这个有时候为什么初始化出来只有.mmap文件但是却没有生成.xlog文件,要第二次运行有了.mmap文件才会生成.xlog文件吗?

@agoodcoolman
Copy link

几年了,也不知道更新没。

@EtherealYi
Copy link

请问多文件的事情有后续了么

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests