环境:
本机: Windows 10
服务器:Ubuntu 16.04
AS:Android Studio Dolphin
IDEA:2023.2

参阅文档:
github.com/Meituan-Dia…

建立Android日志系统 美团点评大前端Logan入门指南

IDEA中打包JavaWeb文件(war),并布置在Tomcat中运转_idea war包布置到tomcat_Shen-Childe的博客-CSDN博客

blog.csdn.net/today__pres…

一.准备工作

1.现在项目文件到本地

git clone https://github.com/Meituan-Dianping/Logan.git

2.装置IDEA(需求重启电脑)

www.jetbrains.com/idea/downlo…

二.翻开Android demo试试

假如不想跑demo,想直接集成到自己项目里,直接依靠打包好的库即可

implementation ‘com.dianping.android.sdk:logan:1.2.4’

运用方法见README文件:

github.com/Meituan-Dia…

假如想直接集成来用,下面内容能够越过

demo在Logan项目里,途径为Logan\Example\Logan-Android,运用AS翻开

项目运用的是gradle-3.3,等等它下载好

为了加速构建速度,build.gradle文件里加上阿里云和其他的maven库吧

repositories {
        maven {
            url 'https://maven.aliyun.com/repository/public/'
        }
        mavenCentral()
        google()
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }

同步项目

依靠下载完之后,报错了,Failed to find target with hash string 'android-23'

短少android 23的 SDK,装置一下:

安卓初级搬砖工一站式搭建Logan笔记

还短少 Build Tool 25.0.2,持续装置:

安卓初级搬砖工一站式搭建Logan笔记
缺NDK,查一下需求的NDK版别:

安卓初级搬砖工一站式搭建Logan笔记

持续装置NDK

github.com/android/ndk…

安卓初级搬砖工一站式搭建Logan笔记

将下载的ndk的zip包解压到 sdk/ndk目录下

修正项目local.properties文件装备ndk途径:

sdk.dir=C:\Android\sdk
ndk.dir=C:\Android\sdk\ndk\android-ndk-r16b

翻开logan/build.gradle,看看logan支撑那些架构,删掉x86,加速后面编译速度:

cmake {
    arguments '-DBUILD_TESTING=OFF', '-DANDROID_TOOLCHAIN=gcc'
    cFlags "-std=c11"
    abiFilters 'armeabi-v7a', 'arm64-v8a'/*, 'armeabi', 'x86', 'x86_64'*/
}

短少CMake,持续装:

安卓初级搬砖工一站式搭建Logan笔记

同步下项目,又是一通依靠下载和编译,弹框跟我说android gradle plugin版别跟我的AS不兼容,点begin upgrade去升级

安卓初级搬砖工一站式搭建Logan笔记

总算跑起来了:

安卓初级搬砖工一站式搭建Logan笔记

三.自己电脑上布置试试

这部分能够越过,直接看第四部分服务器上布置

1.服务端先本地(Windows 10)跑一下

装置MySQL8.0

装置DBeaver,新建数据库衔接连上本地数据库

安卓初级搬砖工一站式搭建Logan笔记

先创立一个名为logan的数据库:

安卓初级搬砖工一站式搭建Logan笔记

依据Logan项目中Server/README文件,进行数据库创立(DBeaver – SQL修正器 – 新建SQL修正器),在SQL修正器中输入上SQL创立的命令:

安卓初级搬砖工一站式搭建Logan笔记

创立好这4个表之后,在DBeaver的logan数据库上右键改写就能够看到新创立的表

安卓初级搬砖工一站式搭建Logan笔记

修正项目中数据库装备文件 Server/src/main/resources/db.properties,

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/logan?characterEncoding=UTF8&allowMultiQueries=true&socketTimeout=60000&autoReconnect=true
jdbc.username=root
jdbc.password=12345678

修正log4j.properties

修正日志文件的途径(log4j.appender.R.File这一行):

log4j.rootLogger=ERROR,R,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
// 改下面这一行
log4j.appender.R.File=D:/test/logan.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

项目无法运转怎么办:

安卓初级搬砖工一站式搭建Logan笔记

设置一个装备,里面选Maven

Command Line填入 tomcat7:run

修正pom.xml文件新增tomcat7插件:

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <port>8888</port>
  </configuration>
</plugin>

加载pom文件最后

安卓初级搬砖工一站式搭建Logan笔记

重新加载maven项目:

安卓初级搬砖工一站式搭建Logan笔记

此时点IDEA的绿色三角形运转项目

IDEA的Log会输入如下(要记住这个地址下面还会用到):

安卓初级搬砖工一站式搭建Logan笔记

浏览器中输入:http://localhost:8888/logan-web/,浏览器显现 hello, logan ,运转成功。

2.在本机上跑一下Logan的Web页面(这部分能够不必跟着操作,看一遍即可)

Logan中Web页面的项目目录是Logan/LoganSite

项目下的README文件有写本地运转过程和不同服务器布置的过程。

先看看要求

安卓初级搬砖工一站式搭建Logan笔记

版别号上有个^符号,这个意思是大于等于当时版别可是小于下个大版别:

Node版别要 >= 10.15.3 且 < 11.0.0

npm版别要 >=6.12.0 且 < 7.0.0

yarn版别要 >=1.15.2 且 < 2.0.0

我的电脑之前装置过nodejs,版别并不满足要求,

所以把本地的nodejs卸载了,装置nvm(node版别管理工具),下载nvm-setup.exe装置在D盘

装置方法:blog.csdn.net/youhebuke22…

下载地址:github.com/coreybutler…

装置完结之后,设置一下淘宝源

装置合适版别的node和npm:

nvm install 10.24.1
nvm use 10.24.1

这个版别的node对应的npm为6.14.12,装置了node之后会默许也按装置好npm

咱们只看本地运转的

目录下创立文件.env.development,填入

上面log中打印的地址:

API_BASE_URL=http://localhost:8888/logan-web

CMD中发动项目:

$ cd C:\Projects\Logan\Logan\LoganSite
$ npm install
$ npm run start

改写Logan的web页面,服务器报错:

安卓初级搬砖工一站式搭建Logan笔记

网上搜索了下,是MySQL时区问题,在db.properties的url加上时区参数即可:serverTimezone=GMT%2B8:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/logan?characterEncoding=UTF8&allowMultiQueries=true&socketTimeout=60000&autoReconnect=true&serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=12345678

再重新跑一下服务器代码

3.发个日志试试

回到AS,持续改造Android Demo的代码,修正MainActivity中的上报地址url:

http://172.16.88.160:8888/logan-web/logan/upload.json

这儿是 http协议,我本机的ip地址+服务器的端口号

安卓初级搬砖工一站式搭建Logan笔记

demo跑起来,记住手机和电脑在同一个局域网下面,点击按钮”测试LOGAN默许上报方法“,AS的Log中能够看到上传成功了:

安卓初级搬砖工一站式搭建Logan笔记

改写Web页面,也呈现了一条新的日志:

安卓初级搬砖工一站式搭建Logan笔记

四.服务器布置

上面跑通了流程,下面正式开干了,往服务器上布置服务端和WebSite。

1.布置服务端

方案:将本地的装备改一改,打成war包上传到服务器上运转

服务器装置和装备Tomcat8

 sudo apt-get install tomcat8 tomcat8-docs tomcat8-examples tomcat8-admin

装备管理员权限:

<role rolename="manager-gui"/>
<role rolename="admin-gui"/> 
<user username="root" password="123456" roles="manager-gui,admin-gui"/>

tomcat常用命令:

 #发动 
service tomcat8 start
#状况 
service tomcat8 status
#中止 
service tomcat8 stop
#重启
service tomcat8 restart
#卸载
sudo apt-get autoremove tomcat8

Tomcat发动后要查询下占用的端口号:

ps -ef | grep tomcat

查询下tomcat的PID

安卓初级搬砖工一站式搭建Logan笔记

sudo netstat -anop

依据PID找到端口号

安卓初级搬砖工一站式搭建Logan笔记

还有个要注意的便是端口号,假如有其他的服务在跑占用了8080(比如我的Jenkins就用的这个端口),那就需求修正tomcat默许的端口号:

默许装备文件在这个途径下:

/var/lib/tomcat8/conf的server.xml文件,端口号改成没有被占用的

安卓初级搬砖工一站式搭建Logan笔记

tomcat运转后,在浏览器输入ip+端口号,就能够看看tomcat是否正常运转。

装置和装备MySQL

sudo apt install mysql-server

登录:

sudo mysql -u root -p

下面都是在MySQL命令行中操作:

#显现数据库:
show databases;
#创立数据库:
create database logan;
#运用数据库:
use logan
#显现当时数据库表
show tables;
#接下来,将服务端创立数据库的命令仿制,创立4个数据库表
CREATE TABLE ...
#退出mysql
quit;

需求装备装备MySQL能够长途拜访的话,能够参阅下面文章(不必替换暗码,设置成能够长途衔接之后重启mysql):

blog.csdn.net/qq_39724355…

服务器运用的MySQL版别是5.7,tomcat总是报错无法衔接,日志里报了SSL警告,url参数加上useSSL=false就好了,不知道什么原因。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/logan?characterEncoding=UTF8&allowMultiQueries=true&socketTimeout=60000&autoReconnect=true&useSSL=false
jdbc.username=root
jdbc.password=12345678

布置war包

修正下项目中log地址,改成服务器地址

安卓初级搬砖工一站式搭建Logan笔记

参阅下面文章将项目打成war包:

IDEA中打包JavaWeb文件(war),并布置在Tomcat中运转_idea war包布置到tomcat_Shen-Childe的博客-CSDN博客

Ubuntu上tomcat的webapp目录默许在 /var/lib/tomcat9/webapps/

将生成的war包经过FinalShell传到这个目录下面,重启tomcat。

如何重新替换war包:

运转出错了需求替换war包,将服务器这个war包删除,并将同名文件夹也删掉即可。

浏览器输入下面网址,能够进入tomcat的管理网页:

http://192.168.88.74:8081/manager/html

安卓初级搬砖工一站式搭建Logan笔记

这儿能够看到咱们布置的logan成功了,途径是/logan-web_war,那么咱们logan服务器的地址便是:

http://192.168.88.74:8081/logan-web_war

假如想检查Tomcat的日志,能够用以下命令:

tail -f /var/lib/tomcat8/logs/catalina.out

修正Android demo发送日志试试,发现Logcat中报错:

日志上传成果, http状况码: 200, 详细: {"code":500,"msg":"ERROR_DATABASE","data":null}

在服务端代码里加日志发现是没有文件夹权限导致,咱也不知道怎么弄,直接创立好文件夹:

安卓初级搬砖工一站式搭建Logan笔记

直接创立好需求的文件夹 /var/lib/tomcat8/logfile,权限也满上777。

2.布置WebSite

服务器也把logan的github项目clone下来

装置nvm(github.com/nvm-sh/nvm#…):

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash

改写环境变量

source .bashrc

装置node

nvm install 10.24.1
nvm use 10.24.1

npm切换为国内镜像:

npm config set registry "http://registry.npm.taobao.org/"

(后面的过程就和上面本机上布置是一样)

项目目录下创立文件.env.development,填入上面查到的tomcat运用地址(localhost记住改成ip)

API_BASE_URL=http://192.168.88.74:8081/logan-web_war

编译和发动项目:

$ cd ~/projects/Logan/Logan/LoganSite/
$ npm install
$ npm run start

安卓初级搬砖工一站式搭建Logan笔记

上图两个地址便是LoganSite的拜访地址。

拜访页面正常,可是有弹框报错NetError,翻开网页控制台发现报跨域过错

安卓初级搬砖工一站式搭建Logan笔记

依据这儿面的回答:

github.com/Meituan-Dia…

在跨域过滤器里添加上web站点的ip和端口:

安卓初级搬砖工一站式搭建Logan笔记

重新发布war包,即可处理。

将loganSite打包布置到服务器tomcat:

// 进入项目目录
cd ~/projects/Logan/Logan/LoganSite/
//打包
npm run build
//将打包文件仿制到tomcat目录下
cp -r build /var/lib/tomcat8/webapps/
//文件夹重命名
mv /var/lib/tomcat8/webapps/build /var/lib/tomcat8/webapps/logansite

附:

上面的项目只能在内网运用,假如想在外网运用,需求将Logan服务端映射到外网端口,为了安全,将LoganSite项目只能在内网拜访。

这儿咱们给tomcat再开一个端口,单独拜访LoganSite即可,这儿记住还要修正服务端对跨域恳求的设置(CORSFilter.java),将loganSite的地址加到允许列表里,参阅以下内容:

blog.csdn.net/qq_34469175…

项目中定义的日志类型:

安卓初级搬砖工一站式搭建Logan笔记