added iOS source code
[wl-app.git] / iOS / Pods / AlamofireActivityLogger / README.md
1 # AlamofireActivityLogger
2
3 A response serializer for [**Alamofire**](https://github.com/Alamofire/Alamofire) which logs both request and response. It provides 4 log levels and a few options to configure your logs.
4
5 **AlamofireActivityLogger** is available for: 
6
7 - iOS (from 9.0)
8 - macOS (from 10.11)
9 - watchOS (from 2.0)
10 - tvOS (from 9.0)
11
12
13 > **NOTE**: This version is written for **Alamofire 4.x** and **Swift 3**. To support **Swift 2** and **Alamofire 3.x** use the [version 1.0.1](https://github.com/ManueGE/AlamofireActivityLogger/tree/1.0.1/).
14
15 ## Installing AlamofireActivityLogger
16
17 ##### Using CocoaPods
18
19 Add the following to your `Podfile`:
20
21 ````
22 pod 'AlamofireActivityLogger'
23 ````
24
25 Then run `$ pod install`.
26
27 And finally, in the classes where you need **AlamofireActivityLogger**: 
28
29 ````
30 import AlamofireActivityLogger
31 ````
32
33 If you don’t have CocoaPods installed or integrated into your project, you can learn how to do so [here](http://cocoapods.org).
34
35 ## Log
36
37 To log a request you just have to write:
38
39 ````
40 request(.get, url)
41     .validate()
42     .log()
43 }
44 ````
45
46 Additionally, you can provide the log level and some options:
47
48 ````
49 request(.get, url)
50     .validate()
51     .log(level: level, options: options, printer: myPrinter)
52 }
53 ````
54
55 Let's see the **levels** and **options**.
56
57 ### Levels
58
59 Are instances of the enum `LogLevel`. The available values are:
60
61  * **`none`**: Do not log requests or responses.
62  
63  * **`all`**: Logs HTTP method, URL, header fields, & request body for requests, and status code, URL, header fields, response string, & elapsed time for responses.
64  
65  * **`info`**: Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses.
66  
67  * **`error`**: Logs HTTP method & URL for requests, and status code, URL, & elapsed time for responses, but only for failed requests.
68  
69  The default value is **`all`**.
70
71 ### Options
72
73 Are instances of the enum `LogOption`. The available values are:
74
75 * **`onlyDebug`**: Only logs if the app is in Debug mode
76  
77 * **`jsonPrettyPrint`**: Prints the JSON body on request and response 
78  
79 * **`includeSeparator`**: Include a separator string at the begining and end of each section
80
81  The default value is **`[.onlyDebug, .jsonPrettyPrint, .includeSeparator]`**.
82  
83 ### Custom printers
84
85 If you use a third party logger, you can integrate it with AlamofireActivityLogger. To do it, you must provide a `Printer` object. 
86
87 `Printer` is a protocol which just requires one method: 
88
89 ````swift
90 func print(_ string: String, phase: Phase)
91 ````
92
93 As an example, let’s suppose you have [SwiftyBeaver](https://github.com/SwiftyBeaver/SwiftyBeaver) integrated in your app. We can create a `SwiftyBeaverPrinter` struct like this: 
94
95 ````swift
96 struct SwiftyBeaverPrinter: Printer {
97     func print(_ string: String, phase: Phase) {
98         if phase.isError {
99             log.error(string)
100         }
101         else {
102             log.info(string)
103         }
104     }
105 }
106 ````
107
108 And use it this way:
109
110 ````swift
111 request(.get, url)
112     .validate()
113     .log(printer: SwiftyBeaverPrinter())
114 }
115 ````
116
117 By default, a instance of `NativePrinter` is used. It just make use of the native `Swift.print` to print the info.
118
119  
120 ## Supported requests
121
122 At the moment, **AlamofireActivityLogger** has support for `DataRequest` and `DownloadRequest`. If you need to add support to any other `Request` subclass, just make it conforms the `LoggeableRequest` protocol. Take a look at the `DataRequest` implementation to know how. 
123
124
125 ## Contact
126
127 [Manuel García-Estañ Martínez](http://github.com/ManueGE)  
128 [@manueGE](https://twitter.com/ManueGE)
129
130 ## License
131
132 AlamofireActivityLogger is available under the [MIT license](LICENSE.md).