Coder Social home page Coder Social logo

oolong's Introduction

Oolong

CI

Getting started

Oolong is an object oriented logging system for modern Fortran. The aim of this project is to provide a simple, flexible logging interface that will enable a wide range of logging functionality for a wide range of model paradigms.

The project uses the Fortran package manager (FPM) as a build system. Simply install FPM and use fpm build to build the oolong library. An example of the functionality of offer can be run with fpm run --example and the test suite can be run with fpm test.

Installation

To install Oolong as a static library, run

fpm install --prefix .

Additionally, installation can be achieved with Spack for users that want to bypass FPM as an immediate dependency. This can be achieved by running:

spack repo add .spack
spack install oolong

Usage

The Oolong logging system can be used from within a Fortran application. The minimum amount of code needed to get started is shown below:

use oolong, only: logger_type, LEVEL_INFO
...
type(logger_type) :: log
log = logger_type(LEVEL_INFO)
call log%event("Hello world!", LEVEL_INFO)

which produces the following output:

[2024-03-05 14:14:09.573] INFO: Hello world!

More advanced usage can be seen in the examples/demo.f90 file.

oolong's People

Contributors

edhone avatar

Watchers

 avatar

oolong's Issues

Log levels

Log levels are essential functionality, and this issue will address them

Create a Spack package.py

Installation of the tool using Spack would be nice functionality for projects that don't use FPM. This issue will create a package.py file that will enable this.

Potential issues may arise over the use of FPM as a build system - it is likely that a Makefile will also need to exist for this purpose.

Abstract logger class

Different forms of logging functionality and model paradigms will likely require different classes. To enable this, an abstract logger class should be created from which the more specific types can be derived. This issue will carry out this work.

MPI logging functionality

Implement an MPI version of the logger object

Ideas:

  • Option to log from all ranks or just root rank
  • should be able to pass directive flag via Spack spec, if this is passed once at library top level that should be sufficient

Colour formatting

It would be a nice feature to enable colour formatting at users specification

Address issues with FPM assumptions for compiler flags

There looks to be some interesting behaviour from FPM when it comes to standard compiler flags - in particular setting FPM_FC to ftn on a cray platform differs in behaviour from gfortran even when these are both pointing to the same compiler.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.