Skip to content
Snippets Groups Projects
Commit 5af79d4c authored by Lukas Karsch's avatar Lukas Karsch
Browse files

#17

Created logging configuration file. Logger can be used with

Logger log = LoggerFactory.getLogger(YourClass.class)
parent 7fa48472
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,8 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/
/logs
### VS Code ###
.vscode/
......@@ -2,20 +2,25 @@ package hdm.mi.growbros;
import com.fasterxml.jackson.databind.ObjectMapper;
import hdm.mi.growbros.models.plant.Plant;
import hdm.mi.growbros.repositories.PlantRepository;
import hdm.mi.growbros.service.PlantsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class GrowBrosApplication {
private static final Logger log = LoggerFactory.getLogger(GrowBrosApplication.class);
public static void main(String[] args) {
SpringApplication.run(GrowBrosApplication.class, args);
}
@Bean
public CommandLineRunner plants(PlantRepository plantRepository) {
public CommandLineRunner plants(PlantsService plantsService) {
return (args) -> {
String jsonString = """
{"name":"Salat (Gartensalat)","latinName":"Lactuca sativa var. crispa","growingTips":"Salate eignen sich sehr gut als ‚Lückenfüller‘. Sie benötigen ausreichend Feuchtigkeit und haben einen vergleichsweise geringen Nährstoffbedarf. Durch eine geschickte Auswahl lassen sich Salate das ganze Jahr über anbauen: im Frühjahr und Frühsommer Kopf- und Schnitt-/Pflücksalate; im Sommer und Herbst Zichoriensalate und Eissalate sowie Feldsalat (v.a. im Herbst, Winter). Für eine kontinuierliche Ernte am besten in zeitlichen Abständen säen bzw. pflanzen. Arten und Sorten müssen dabei an die jeweilige Jahreszeit angepasst sein, z.B. beginnen Frühjahrssorten bei zu viel Hitze zu schießen. Dabei bildet sich ein langer Stiel und die Blätter werden bitter. Nach einigen Wochen kommen oben kleine Blüten zum Vorschein, woraus sich viele halbmondförmige Samen bilden. Diese können für das Folgejahr abgesammelt werden oder verteilen sich selbst im Beet, wenn du sie stehen lässt.\\n","description":"Salat steht als Überbegriff für viele Blattgemüse. Kopfsalate bilden - wie der Name schon sagt - einen Kopf und werden am Stück geerntet. Pflücksalate kann man kontinuierlich ernten, wenn man jeweils nur einzelne Blätter abpflückt. ","origin":"Gartensalate sind gezüchtete Lattichgewächse (Lactuca sativa) mit Urpsrung in Südeuropa, Nordafrika und Indien. Darunter fallen Kopfsalate (Batavia, Eissalat), Schnitt-/Pflücksalate (Lollo Rosso/Bionda, Eichblatt) und Römersalate.","plantWeekStart":12,"plantWeekEnd":35,"harvestWeekStart":15,"harvestWeekEnd":44,"growthDuration":6,"nutrientDemand":"MEDIUM","lightingDemand":"MEDIUM","waterDemand":"WET","groundType":null,"imageUrl":"https://d3t240q2dksnz7.cloudfront.net/a4cbb94a099179235fdd5696ae5f3833.jpg"}
......@@ -25,9 +30,10 @@ public class GrowBrosApplication {
try {
Plant plant = objectMapper.readValue(jsonString, Plant.class);
plantRepository.save(plant);
plantsService.createPlant(plant);
log.info("Saved mock plants");
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
};
}
......
......@@ -23,6 +23,7 @@ public class Plant {
private Long id;
@NotBlank
@Column(unique = true)
private String name;
private String latinName;
......
......@@ -3,6 +3,8 @@ package hdm.mi.growbros.service;
import hdm.mi.growbros.models.plant.Plant;
import hdm.mi.growbros.repositories.PlantRepository;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.Collection;
......@@ -10,6 +12,8 @@ import java.util.Collection;
@Service
@RequiredArgsConstructor
public class PlantsService {
private final static Logger log = LoggerFactory.getLogger(PlantsService.class);
private final PlantRepository plantRepository;
public Collection<Plant> getPlants() {
......@@ -17,7 +21,7 @@ public class PlantsService {
}
public void createPlant(Plant plant) {
log.info("Saving plant '{}' to repository.", plant.getName());
plantRepository.save(plant);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs"/>
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%white(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/spring-boot-logger.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</root>
<logger name="hdm.mi" level="debug" additivity="false">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</logger>
</configuration>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment