LOG4cxx安装指南

简介:Log4shell是开放源代码项目Apache Logging Service的子项目log4j在shell下的实现,用于为shell程序提供日志功能,以便开发者对目标程序进行调试和审计。虽然shell可以方便的操作文件,但通过成熟的日志框架更方便我们对日志的记录与处理。

(1)Reference-ubuntu
(2)Reference-其它
(3)Reference-log4shell(该参考文档无法实现仅供参考)

1 下载源码

安装:
apr\apr-util、log4cxx

2 安装log4cxx步骤-ubuntu(已验证)

2.0 环境

  • Linux version 4.15.0-70-generic (buildd@lgw01-amd64-057) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12))

2.1 安装apr

# ./configure --prefix=/usr/local
# make
# sudo make install

2.2 安装apr-util

# ./configure --prefix=/usr/local --with-apr=/usr/local
# make
# sudo make install

2.3 安装log4cxx

# ./configure --prefix=/usr/local/ --with-apr=/usr/local/ --with-apr-util=/usr/local/  --with-charset=utf-8 --with-logchar=utf-8

添加头文件
src/main/cpp/inputstreamreader.cpp添加#include <string.h>
src/main/cpp/socketoutputstream.cpp添加#include <string.h>
src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;

# make
# sudo make install

3 测试

3.1 测试主函数

main.cpp

#include <log4cxx/logger.h>
#include <log4cxx/basicconfigurator.h>
#include <log4cxx/helpers/exception.h>
#include <log4cxx/propertyconfigurator.h>using namespace log4cxx;
using namespace log4cxx::helpers;LoggerPtr logger_file(Logger::getLogger("file"));//获取配置文件中file对应的句柄
LoggerPtr logger_file(Logger::getLogger("console"));//获取配置文件中console对应的句柄int main(){PropertyConfigurator::configure("./log4cxx.properties");//加载配置文件,下面会细说LOG4CXX_INFO(logger_file,"This is a test");return 0;
}

3.2 配置文件

log4cxx.properties

#设置日志level为INFO,fa为文件输出对象,ca为控制台输出对象
log4j.rootLogger=INFO,fa,ca
#设置日志对象
log4j.logger.console=INFO,ca
log4j.logger.file=INFO,fa
#不向默认对象(rootLogger)输出,因此信息只能输出到文件
log4j.additivity.file=false
#**************************
#控制台,同时也会输出到默认输出对象
#**************************
log4j.appender.ca=org.apache.log4j.ConsoleAppender
log4j.appender.ca.layout=org.apache.log4j.PatternLayout
log4j.appender.ca.layout.ConversionPattern=[%-5p][%d] : %m%n
#**************************
#设置日志文件信息,比如大小,时间格式
#**************************
log4j.appender.fa=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fa.File=./log/today.log
log4j.appender.fa.Append=fasle
log4j.appender.fa.MaxFileSize=10MB
log4j.appender.fa.MaxBackupIndex=1000
log4j.appender.fa.DatePattern=yyyy-MM-dd
log4j.appender.fa.layout=org.apache.log4j.PatternLayout
log4j.appender.fa.layout.ConversionPattern=[%-5p][%d] : %m%n

3.2 配置环境变量(~/.bashrc的方法?)

export LD_LIBRARY_PATH=/usr/local/lib

或长期生效~/.bashrc

export LD_LIBRARY_PATH=/usr/local/lib
export PATH=$LD_LIBRARY_PATH:$PATH
# source ~/.bashrc
# echo $PATH        # 查看结果

3.3 编译

# g++ main.cpp -o test -llog4cxx

3.4 执行

进入log文件夹打印’today.log’日志

[INFO ][2020-02-19 20:02:01,477] : This is a test

4 移植log4cxx步骤-集中器(交叉编译没有寻找到log4cxx库,待解决)

(1)Reference-交叉编译-报错与解决

4.0 环境

  • Linux version 4.1.15-gee690fe-dirty (root@ubuntu) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05) )

4.1 安装pcre

# ./configure --prefix=/home/pan/toolchain/log4shell/install/usr/local --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld

4.2 移植apr

# ./configure --host=arm-linux-gnueabihf --prefix=/home/pan/toolchain/log4shell/install/usr/local  CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes ac_cv_sizeof_struct_iovec=8 --cache=arm-linux.cache

待测试

# export ARMROOTS=/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/libc
./configure --host=arm-linux-gnueabihf --prefix=$ARMROOTS/usr/apr   CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes ac_cv_sizeof_struct_iovec=8 --cache=arm-linux.cache

./arm-linux.cache添加如下代码

apr_cv_process_shared_works=yes
apr_cv_mutex_robust_shared=yes

./configure添加如下代码

1>源码位置:

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_ssize_t" >&5
$as_echo_n "checking which format to use for apr_ssize_t... " >&6; }
...
$as_echo "%ld" >&6; }

上个代码后插入如下代码:(添加)

elif test "$ac_cv_sizeof_ssize_t" = "$ac_cv_sizeof_long_long";thenssize_t_fmt="lld"{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %lld" >&5
$as_echo "%lld" >&6; }

衔接源代码:

elseas_fn_error $? "could not determine the proper format for apr_ssize_t" "$LINENO" 5
fi

2>源码位置:

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which format to use for apr_size_t" >&5
$as_echo_n "checking which format to use for apr_size_t... " >&6; }
...
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %ld" >&5
$as_echo "%ld" >&6; }

上个代码后插入如下代码:(添加)

elif test "$ac_cv_sizeof_size_t" = "$ac_cv_sizeof_long_long"; thensize_t_fmt="lld"{ $as_echo "$as_me:${as_lineno-$LINENO}: result: %lld" >&5
$as_echo "%lld" >&6; }

衔接代码

elseas_fn_error $? "could not determine the proper format for apr_size_t" "$LINENO" 5
fi
# make
# sudo make install

4.3 移植apr-util

# ./configure --prefix=/home/pan/toolchain/log4shell/install/usr/local --with-apr=/home/pan/toolchain/log4shell/install/usr/local --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ LD=arm-linux-gnueabihf-ld
# make
# sudo make install

4.3 安装log4cxx

# cd apache-log4cxx-0.10.0
# ./configure --host=arm-linux-gnueabihf --prefix=/home/pan/toolchain/log4shell/install/usr/log4cxx/ --with-apr=/home/pan/toolchain/log4shell/install/usr/local/ --with-apr-util=/home/pan/toolchain/log4shell/install/usr/local/  --with-charset=utf-8 --with-logchar=utf-8 CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++

添加头文件
src/main/cpp/inputstreamreader.cpp添加#include <string.h>
src/main/cpp/socketoutputstream.cpp添加#include <string.h>
src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;

# make
# sudo make install

5 测试移植

5.1 配置环境变量

# export ARM_LD_LIBRARY_PATH=/home/pan/toolchain/log4shell/log4cxx

log4cxx放到如下目录下

/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/include/c++/4.8.2/log4cxx

log4cxx/lib下的文件导入到arm-linux…目录下:

root@ubuntu:/home/pan/toolchain/log4shell/install/usr/log4cxx/lib# cp -rf * /home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/lib

5.2 编译(编译不过)

# arm-linux-gnueabihf-g++ main.cpp -o test -I/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/arm-linux-gnueabihf/lib/arm-linux-gnueabi/log4cxx -llog4cxx

5.2.1 编译报错(未解决)

/home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/ ../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: warning: libaprutil-1.so.0, needed by /home/pan/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/ ../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/lib/liblog4cxx.so, not found (try using -rpath or -rpath-link)

LOG4cxx安装指南相关推荐

  1. log4cxx第三篇----使用多个logger

    使用多个logger时,所有logger的配置写在一个配置文件里面 两个例子: 1 一个继承的例子(http://logging.apache.org/log4cxx/) // file com/fo ...

  2. Storm 0.9安装指南

    Storm 0.9.2安装指南 0 Storm0.9的亮点 引用网上的描写叙述: "Storm 0.9.0.1版本号的第一亮点是引入了netty transport.Storm网络传输机制实 ...

  3. linux 保存编译log,(转)Linux下编译安装log4cxx

    一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...

  4. 10个深度学习软件的安装指南(附代码)

    来源:AI前线 本文长度为2385字,建议阅读4分钟 本文为你介绍10个深度学习软件安装指南. 由于近期论文的需要,我搭建了一个基于 Ubuntu 和英伟达的深度学习环境.尽管已经有很多非常棒的关于英 ...

  5. Facebook Docusaurus 中文文档 安装指南

    此系列文章的应用示例已发布于 GitHub: docusaurus-docs-Zh_CN. 可以 Fork 帮助改进或 Star 关注更新. 欢迎 Star. 安装指南 Docusaurus 是从全新 ...

  6. apache hadoop 2.4.0 64bit 在windows8.1下直接安装指南(无需虚拟机和cygwin)

    工作须要.要開始搞hadoop了,又是大数据,自己感觉大数据.云.仅仅是ERP.SOAP风潮之后与智能地球一起诞生的概念炒作. 只是Apache是个奇妙的组织.Java假设没有它也不会如今如火中天.言 ...

  7. VS2005中ajax安装指南[转]

    2019独角兽企业重金招聘Python工程师标准>>> VS2005中ajax安装指南[转] 以下是收集关于AjaxControlToolkit安装的一篇文章,感谢原作者 AjaxC ...

  8. 本机安装PaddlePaddle - 安装指南

    简 介: 根据 文档安装指南 介绍了在本机安装PaddlePaddle的步骤. 关键词: PaddlePaddle,pip,安装 #mermaid-svg-RMWtzcncmslaS8dM {font ...

  9. [WTL] STLport安装指南

    STLport安装指南 STLport-4.6 是完全兼容ANSI C++标准的类库. This distribution contains STLport sources only, no bina ...

  10. Team Foundation Server Beta3 安装指南

    Team Foundation Server Beta3 安装指南 发布日期: 11/11/2005 | 更新日期: 12/15/2005 本页内容 1.概述 2.安装的安全 3.单服务器的安装过程 ...

最新文章

  1. 机房配电柜、配电箱在安装时应该注意哪些“禁忌”?
  2. 局部钩子能防全局钩子吗_Vue你真的熟吗?来回答这几个问题试试
  3. 关于用 ABAP 代码手动触发 SAP CRM organization Model 自动决定的研究
  4. 【洛谷 P4051】 [JSOI2007]字符加密(后缀数组)
  5. 云计算之路-阿里云上:Web服务器请求到达量突降
  6. 大数据工程师技能图谱
  7. [nsis]安装包反编译
  8. mysql数据库优化经验_MySQL数据库优化经验详谈
  9. 使用花生壳做内网穿透
  10. xu2w显示屏软件下载_LED BEST(LED显示屏控制软件) V2.8 官方版
  11. Horizontalscrollview
  12. 【Python】Python中将字符串中的大写字母转换为小写字母,同时将小写字母转换为大写字母
  13. mysql 1698_MySql Error 1698(28000)问题的解决方法
  14. 内外网安全文件摆渡如何实现自动化?
  15. Halcon学习笔记-工业相机千兆网线和USB优劣对比
  16. 前端开发相关的学习网站
  17. JAVA高级(一)——lambda
  18. Safari iframe方式无法呼起微信app之问题探索
  19. 哪位前端大神可以帮我看一下我的问题
  20. 不要压制冬天的寒冷,也不要抵御夏天的炎热

热门文章

  1. uniapp字体图标的使用
  2. PAT 甲级 1158 Telefraud Detection
  3. 2019春季PAT甲级题解
  4. 2013蓝色星际笔试题
  5. 如何解决“App开发者需要更新此App以在此iOS版本上正常工作”
  6. 《遥远的救世主》遵守客观规律(七)——文化属性
  7. EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程
  8. “微肥”还是“歪fai”
  9. 【学术相关】人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史...
  10. 2021-04-15 三级管npn和pnp的区别