docs.rs failed to build ezlog-0.1.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
ezlog-0.2.1-alpha.1
EZLog
EZLog is a high efficiency Cross-platform logging library.
it is inspired by Xlog and Loagan, rewrite in Rust.
Feature
- iOS, Android, MacOS support.
- map file into memory by mmap.
- zlib compression.
- AEAD encryption.
- fetch log by callback.
- trim out of date files.
- CLI paser support.
Quick Start
iOS
By CocoaPods
Add EZLog to Podfile
pod 'EZLog', '~> 0.1'
then
pod update
Open Xcode, add sample code
import EZLog
init() {
pthread_setname_np("main")
#if DEBUG
ezlogInitWithTrace()
#else
ezlogInit()
#endif
let dirPath = URL.documents.appendingPathComponent("ezlog").relativePath
let config = EZLogConfig(level: Level.trace,
dirPath: dirPath,
name: "demo",
keepDays: 7,
maxSize: 150*1024,
compress: CompressKind.ZLIB,
compressLevel: CompressLevel.DEFAULT,
cipher: Cipher.AES128GCM,
cipherKey: [UInt8]("a secret key!!!!".utf8),
cipherNonce: [UInt8]("unique nonce".utf8))
let logger = EZLogger(config: config)
ezlogRegisterCallback(success: {name, date, logs in
if !logs.isEmpty {
for log in logs {
print("name:" + name + " date:" + date + " log:" + log);
}
} else {
print("no log found at that time")
}
}, fail: {name, date, err in
print("name:" + name + " date:" + date + " err:" + err);
})
logger.debug("first blood")
}
- click run and see console ouput.
Android
Add ezlog to dependencies
open top-level build.gradle, add mavenCentral to repositories.
buildscript
allprojects
open app level build.gradle, add ezlog
dependencies
sync gradle
Setup in application. For example
override fun onCreate() {
super.onCreate()
val path = File(filesDir, "ezlog").absolutePath
val config = EZLogConfig.Builder("demo", path)
.compress(EZLog.CompressZlib)
.compressLevel(EZLog.CompressFast)
.cipher(EZLog.Aes128Gcm)
.cipherKey("a secret key!!!!".toByteArray())
.cipherNonce("unique nonce".toByteArray())
.enableTrace(BuildConfig.DEBUG)
.build()
EZLog.initWith(config)
EZLog.v("ezlog", "first blood")
EZLog._registerCallback(object : Callback {
override fun onLogsFetchSuccess(
logName: String?,
date: String?,
logs: Array<out String>?
) {
Log.i("ezlog", "$logName $date ${logs.contentToString()}")
logs?.let {
logs.getOrNull(0)?.let { log ->
Log.i("ezlog", "check file exists ${File(log).exists()}")
}
}
}
override fun onLogsFetchFail(logName: String?, date: String?, err: String?) {
Log.i("ezlog", "$logName $date $err")
}
})
}
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
use rust nightly default
rustup default nightly
if you already install rust, keep update
rustup update
we use build-std feature, so add nightly src component
rustup component add rust-src --toolchain nightly-x86_64-apple-darwin
add target: iOS, android, etc...
rustup target add aarch64-linux-android armv7-linux-androideabi aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
clone repository and open in command line tool. then run
cargo check
wait crates download...
cargo build -p ezlog
For android build
we use cargo-ndk to build dylib
cargo install cargo-ndk
cd android
sh b_android.sh
then open current workspace in AndroidStudio
For iOS build
install cbindgen
cargo install --force cbindgen
cd ios dir
sh b_ios.sh
open the ios/EZlog.xcworkspace in Xcode
License
See LICENSE-MIT, LICENSE-APACHE,