环境:
本机: 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,装置一下:
还短少 Build Tool 25.0.2,持续装置:
缺NDK,查一下需求的NDK版别:
持续装置NDK
github.com/android/ndk…
将下载的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,持续装:
同步下项目,又是一通依靠下载和编译,弹框跟我说android gradle plugin版别跟我的AS不兼容,点begin upgrade去升级
总算跑起来了:
三.自己电脑上布置试试
这部分能够越过,直接看第四部分服务器上布置
1.服务端先本地(Windows 10)跑一下
装置MySQL8.0
装置DBeaver,新建数据库衔接连上本地数据库
先创立一个名为logan的数据库:
依据Logan项目中Server/README文件,进行数据库创立(DBeaver – SQL修正器 – 新建SQL修正器),在SQL修正器中输入上SQL创立的命令:
创立好这4个表之后,在DBeaver的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
项目无法运转怎么办:
设置一个装备,里面选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文件最后
重新加载maven项目:
此时点IDEA的绿色三角形运转项目
IDEA的Log会输入如下(要记住这个地址下面还会用到):
浏览器中输入:http://localhost:8888/logan-web/,浏览器显现 hello, logan
,运转成功。
2.在本机上跑一下Logan的Web页面(这部分能够不必跟着操作,看一遍即可)
Logan中Web页面的项目目录是Logan/LoganSite
项目下的README文件有写本地运转过程和不同服务器布置的过程。
先看看要求
版别号上有个^符号,这个意思是大于等于当时版别可是小于下个大版别:
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页面,服务器报错:
网上搜索了下,是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地址+服务器的端口号
demo跑起来,记住手机和电脑在同一个局域网下面,点击按钮”测试LOGAN默许上报方法“,AS的Log中能够看到上传成功了:
改写Web页面,也呈现了一条新的日志:
四.服务器布置
上面跑通了流程,下面正式开干了,往服务器上布置服务端和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
sudo netstat -anop
依据PID找到端口号
还有个要注意的便是端口号,假如有其他的服务在跑占用了8080(比如我的Jenkins就用的这个端口),那就需求修正tomcat默许的端口号:
默许装备文件在这个途径下:
/var/lib/tomcat8/conf
的server.xml文件,端口号改成没有被占用的
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地址,改成服务器地址
参阅下面文章将项目打成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-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}
在服务端代码里加日志发现是没有文件夹权限导致,咱也不知道怎么弄,直接创立好文件夹:
直接创立好需求的文件夹 /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
上图两个地址便是LoganSite的拜访地址。
拜访页面正常,可是有弹框报错NetError,翻开网页控制台发现报跨域过错
依据这儿面的回答:
github.com/Meituan-Dia…
在跨域过滤器里添加上web站点的ip和端口:
重新发布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…
项目中定义的日志类型: